我已经在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>
注意,不需要使用迭代器的变量,但是如果使用了迭代器,则可以使用
#
从值堆栈上下文访问它。