如何在JavaScript中循环Java List <object []>对象?</object []>

时间:2013-12-10 15:56:09

标签: java javascript json list

控制器

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]无法获取。

2 个答案:

答案 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;

 });