2014-09-21 55 views
1

我在Struts 2中創建的應用程序用於通過迭代從Struts2的會話截取的JSONObject對象顯示沒有打印任何東西迭代JSON串 - 得到什麼,通過使用Struts2的迭代器等如下所示</p> <pre><code><s:iterator var="menu" value="userMenu.get('permissions')"> <s:property value="menu.name"/> </s:iterator> </code></pre> <p>但我印刷

如果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

如果它是一個*字符串*然後迭代它是(基本上)沒有意義。迭代*數據結構*,就像數組一樣。您需要提供更多信息。 – 2014-09-21 16:54:28

+0

我把它作爲JSONObject,現在我們可以使用 2014-09-21 16:58:46

回答

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> 

注意一個地圖,使用迭代的變量是沒有必要的,但如果使用,那麼它使用#值棧上下文中訪問。

+0

來進行迭代,其中json庫是這樣的 – 2014-09-21 17:50:44

+0

json-lib-2.3-jdk15.jar – 2014-09-21 17:52:22

+0

我正在使用java json – 2014-09-21 17:53:12

相關問題