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