繁体   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