我在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;
}
}
答案 0 :(得分:1)
您可以将以下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>
请注意,使用迭代器的变量不是必需的,但如果使用,则使用#
从值堆栈上下文访问它。