0

我可以用 Jquery 转义对象数组吗?检索Java.Util.List对象时出现错误SyntaxError:非法字符。在我的 Controller 类中,我像这样传递对象数组..

Map<String, List<User>> result = new HashMap<String, List<User>>();
// getting datas from database
List<User> datas = new ArrayList<User>();
datas = dao.get...................
result.put("data",datas);

当我从我的 JSP 中得到它时

<script type="text/javascript">var results = ${result.data};</script>

我得到了 syntaxError。所以,我用谷歌搜索它,我假设我的对象数组包含非法字符,我应该转义它们。(这可能是我的看法)。所以,我试图逃避这个对象数组的字符,但我不知道该怎么做?我试过像这些..

console.log(JSON.stringify(${result.data}));
console.log(${result.data}.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'));
console.log(${result.data}.replace(/[\u0021-\u002f\u003a-\u0040\u005b-\u005e\u0060\u007b-\u007e]/g, ""));
console.log($.grep( ${result.data}, function(e){ return e.id == id; }));
console.log(JSON.parse(${result.data}));

都产生相同的错误。

现在我还在为它烦恼。任何建议将不胜感激。我的主要观点是我想使用我的对象数组而没有任何错误。请帮助我。

4

2 回答 2

1

做什么${result.data}基本上是输出datas.toString()。这取决于User对象的结构,输出将是什么。

最好的办法是使用 Java 对象到 JSON 序列化器(如GsonJackson)并编写一个 Servlet 以将数据输出为 JSON。

格森

Gson gson = new Gson();
String json = gson.toJson(datas);

请参阅Gson 用户指南

杰克逊

ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(datas);

请参阅杰克逊文档

小服务程序

在您的 Servlet 中,您可以使用正确的内容类型输出生成的 JSON:

response.setContentType("application/json; charset=UTF-8");

try (OutputStream os = response.getOutputStream())
{
  os.write(json.getBytes());
  os.flush();
}

这样您就可以使用jQuery.getJSON().

于 2013-08-14T08:14:22.463 回答
0

现在我很好..

<c:set var="results" value="${result.data}" />
<script type="text/javascript">
 var results = jQuery.makeArray("${results}"); 
 alert(results.length);
 alert("${results[0].attributeName}");
</script>
于 2013-08-14T09:25:30.587 回答