我有一个需要从控制器传递到视图的部门名称列表。如果要传递一些部门名称,以下代码可以正常工作,例如。 3个名字。当部门数量变大时,它不起作用,例如300个名称,在这种情况下,JSP代码中的第一个警报甚至不会被调用。我从控制器打印了JSONArray depNameJSONList的长度,它显示了正确的名称数量。我使用JSON的原因是因为我需要在jquery dataTable中使用它。但是,如果有300个名字,为什么不能传递给视图呢?非常感谢!
控制器:
@RequestMapping(value = "/getDepartment", method = { RequestMethod.POST, RequestMethod.GET })
public ModelAndView getDepartment()
{
ModelAndView mv = new ModelAndView();
JSONArray depNameJSONList= new JSONArray(departmentNames);
logger.debug("depNameJSONList size: " + depNameJSONList.length()); // printed 309
mv.addObject("depNameJSONList", depNameJSONList);
mv.setViewName("displayDepartment");
return mv;
}
JSP:
$(document).ready(function()
{
alert("document ready");
var depList = $.parseJSON('${depNameJSONList}');
alert(depList);
});
答案 0 :(得分:1)
我猜你的JSON字符串中有一些特殊字符。 在像这样的情况下,你必须小心使用特殊字符,如'或"或\ r或\ n或\ t;一个(或多个JSON字符串中的thiese字符将在JSON.parse方法中抛出错误。我可以建议使用org.springframework.web.util.HtmlUtils类来编码HTML实体中的特殊字符