簡體   English   中英

轉換Java清單 <String> 到一個Javascript數組中

[英]Convert a Java List<String> into a Javascript array

我正在使用jQuery UI自動完成功能來顯示有關文本輸入字段的建議。 這些建議存儲在稱為建議的Javascript數組中。

我正在嘗試從數據庫中獲取建議數組的字符串值,但無法將List對象轉換為Javascript數組。

Javascript:

var suggestions = [];
$.get('/mywebapp/autocompleteplayer.html', function(data){
    parsed = JSON.parse(data);
    suggestions = parsed.split(",");
}, "json");

$('#autocompleted').autocomplete({
    data: suggestions,
    minLength: 3
});

Spring MVC控制器:

@Controller
public class AutocompletePlayerController {

    @RequestMapping(value = "/autocompleteplayer")
    public List<String> getPlayerSuggestions(){

        List<String> myList;
        //code that fills myList with all of the players' full names from the database, omitted for brevity
        return myList;
    }
}

我知道我沒有正確解析AJAX響應,因為我已經從瀏覽器控制台中檢查了建議數組包含0個元素。 誰能幫我? 我在這里做錯了什么?

您需要在js中像這樣使用它(數據是響應實體,而不是數據-它在data.data ):

$.get('/mywebapp/autocompleteplayer', function(data){
    suggestions = data.data; 
    $('#autocompleted').autocomplete({ // not sure how to use your plugin
        data: suggestions,
        minLength: 3
    });
}, "json");

然后在您的spring控制器中,添加@ResponseBody注釋

@RequestMapping(value = "/autocompleteplayer")
@ResponseBody
public List<String> getPlayerSuggestions(){

    List<String> myList;
    //code that fills myList with all of the players' full names from the database, omitted for brevity
    return myList;
}

不需要JSON.parse任何東西,jQuery已經做到了。

/mywebapp/autocompleteplayer.html聽起來/mywebapp/autocompleteplayer.html 路由是沒有.html autocompleteplayer

除此之外,建議是異步創建的。 因此,自動完成中的數據將始終為空。 我自己沒有使用該插件,因此可能會有一個數據更新功能,否則請嘗試將其放入$.get()函數回調中。

您可以在Java中將JSON數組作為String返回

@Produces("application/json")
public String getPlayerSuggestions(){
....
 Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
 String jsonString = gson.toJson(myList);
 return jsonString;
}

您需要像這樣修改控制器:

@RequestMapping(value = "/autocompleteplayer", method=RequestMethod.GET)
@ResponseBody
public String getPlayerSuggestions(){

    List<String> myList;
    JSONArray jsonArray = new JSONArray();


    for(String item: myList){

        JSONObject jsonObj = new JSONObject();
        jsonObj.put("Item", item);
        jsonArray.put(jsonObj);

    }

    return jsonArray.toString();
}

那么您可以使用JSON輕松處理您的值。 問候,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM