[英]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.