控制器
List<Object[]> permissionList = new ArrayList();
//fill permissionList with list of object ayyays (objetct[0] = permission id, object[1] = permission)
model.addAttribute("permissionList", permissionList);
JSP
var allpermissionList = "${permissionList}";
$.each(allpermissionList, function (index, av) {
var id = av[0];
vat name=av[1];
//set values to div element
});
我无法使用js $ each()遍历我的列表... av [0]和av [1]无法获取。
答案 0 :(得分:4)
Java代码在服务器上运行。 JavaScript在客户端上运行。它们是非常不同的语言,不能开箱即用。当您需要将数据从Java传递到JavaScript时,最简单的方法是使用Jackson将其序列化为JSON。
import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper om = new ObjectMapper();
model.addAttribute("permissionList", om.writeValueAsString(permissionList));
并在JSP中:
var allpermissionList = ${permissionList};
请注意,并非所有Java对象都可以序列化为JSON,因此列表中的对象应该是简单的Java类型(String,Number ...)或POJO。
答案 1 :(得分:2)
我得到了解决..谢谢大家。
控制器
List<Object[]> permissionList = new ArrayList();
// load values
List<Map<String, String>> listAll = new ArrayList<>();
if (permissionList != null && permissionList.size() > 0) {
for (Object[] objects : allPermissions) {
Map map = new HashMap();
map.put("id",objects[0]);
map.put("permName", objects[1]);
listAll.add(map);
}
}
ObjectMapper mapper = new ObjectMapper();
String permissionList = mapper.writeValueAsString(listAll);
model.addAttribute("permissionList", permissionList);
JSP
var allpermissionList = eval(${permissionList});
$.each(allpermissionList, function (index, permission) {
var id = permission.id;
var name = permission.name;
});