我已经在Struts 2中创建了一个应用程序,该应用程序通过使用Struts2迭代器迭代从Struts2会话获取的JSONObject对象来进行显示,如下所示

<s:iterator var="menu" value="userMenu.get('permissions')">
   <s:property value="menu.name"/>
</s:iterator>


但我什么都没印

如果Struts2迭代器无法实现,还有其他选择吗?

我的JSON如下所示

{
  "id": 10,
  "groupName": "manager",
  "permissions": [
    {
      "id": 18,
      "name": "Group 1",
      "modules": [
        {
          "id": 6,
          "name": "Company 1",
          "groupId": 18,
          "stat": true,
          "moduleGrpName": "Group 1"
        },
        {
          "id": 8,
          "name": "Company 2",
          "groupId": 18,
          "stat": true,
          "moduleGrpName": "Group 1"
        }
      ],
      "stat": "false"
    },
    {
      "id": 19,
      "name": "Group 2",
      "modules": [
        {
          "id": 17,
          "name": "Company 3",
          "groupId": 19,
          "stat": true,
          "moduleGrpName": "Group 2"
        },
        {
          "id": 15,
          "name": "Company 4",
          "groupId": 19,
          "stat": true,
          "moduleGrpName": "Group 2"
        }
      ],
      "stat": "false"
    }
  ]
}


编辑:

 public String validateLogin() throws Exception
    {
        TableUser flag=hobjLoginauth.checkUsercredentials(userName, password);
        System.out.println("Flag :"+flag);
        if(flag == null!=true)
        {
            sessionmap.remove("logincheck");
            setSession(sessionmap);
            sessionmap.put("userId", flag.getId());
            sessionmap.put("user",flag.getUsername());
            sessionmap.put("userMenu", new JSONObject(userModulesServicesImpl.getDeSerialized(flag.getGroupId().getPermissions())));
            sessionmap.put("menuGroups",userModulesServicesImpl.getUserModules());
            return SUCCESS;
        }else{
            sessionmap.put("logincheck","1");
            return ERROR;
        }

    }

最佳答案

您可以将以下getter用于JSON

public Map getUserMenu(){
  return JSONObject.fromObject(json);
}


您也可以使用Struts2实用程序执行相同操作

public Map getUserMenu(){
  Map res = null;
  try {
    Object o = JSONUtil.deserialize(json);
    res = (Map)o;
  } catch (JSONException e) {
    e.printStackTrace();
  }
  return res;
}


并通过迭代地图

<s:iterator var="menu" value="userMenu.get('permissions')">
  <s:property value="#menu.name"/>
</s:iterator>


注意,不需要使用迭代器的变量,但是如果使用了迭代器,则可以使用#从值堆栈上下文访问它。

10-07 19:07
查看更多