【问题标题】:How to loop through Java List<Object[]> object in JavaScript?如何在 JavaScript 中循环遍历 Java List<Object[]> 对象?
【发布时间】:2013-12-28 05:48:51
【问题描述】:

控制器

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

【问题讨论】:

  • 这是什么语言的?
  • 阅读生成的源代码,您将看到问题所在。您需要使用 JSON。
  • @adeneo to 部分是Java(OP 说是JSP),底部是JavaScript。
  • controller is java spring controller 问题是循环遍历我在jsp页面中的列表。
  • 我从未使用过 JSP,但只是一个猜测:如果您删除变量周围的引号会怎样,例如var allpermissionList = ${permissionList}?

标签: java javascript json list


【解决方案1】:

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 类型(字符串、数字...)或 POJO。

【讨论】:

    【解决方案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;
    
     });
    

    【讨论】:

      猜你喜欢
      • 2015-03-17
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多