如何将JSON对象传递给Struts2 <s:iterator>标记</s:iterator>

时间:2014-05-04 11:43:12

标签: json struts2 struts2-json-plugin

我通过使用JQuery的ajax调用获取JSON对象。 JSON对象包含模型列表(即Bean)

例如List<myModel>

我正在使用struts2 json插件。

JSON对象作为字符串如下所示。

{"myList":[{"age":26,"degree":"MCA","fname":"Pravin","id":1,"lname":"Varpe"},
{"age":26,"degree":"MCA","fname":"Pramod","id":2,"lname":"Patil"},
{"age":24,"degree":"B.E","fname":"Atul","id":3,"lname":"Vairale"},
{"age":22,"degree":"M.E","fname":"Sudeep","id":4,"lname":"Masare"},
{"age":21,"degree":"BCS","fname":"Nikhil","id":1,"lname":"Pethe"},
{"age":21,"degree":"MCS","fname":"Abhijeet","id":1,"lname":"Supekar"}]}

我想将此JSON对象传递给<s:iterator>标记,如下所示

<s:iterator value = "myJsonObject">
     <s:property value = "fname"/>
     // properties 
</s:iterator>

我可以通过将它迭代到jquery函数&amp;中来在jsp上显示这个JSON对象。创建html元素,但我不想这样做。那么有可能无论如何直接将JSON传递给<s:iterator>标签吗?

2 个答案:

答案 0 :(得分:1)

在与@Aleksandr的讨论中,我找到了答案。我在这里发帖,以便任何面临同样问题的人都能得到帮助。

<s:iterator>代码,我们无法传递JSON对象&amp;它根本不需要。我必须要做的是做一个ajax电话&amp;将结果传递给<s:iterator>

所以不需要使用Struts2 json插件。只需使用dispatcher这是Struts2中默认的结果类型,它返回html。简单的步骤是

  1. 创建单独的JSP页面,说List.jsp,其中包含<s:iterator>标记,我们将传递结果(例如List<myModel>)。

  2. 将此List.jsp作为我们操作的结果页面,如下所示。

    <s:action name="myAction" class="package.MyClass">
        <result name = "success">List.jsp</result>
    </s:action>
    
  3. 所以在进行ajax调用时,我们会得到List.jsp(即html)作为回复。只需将此响应数据添加到您想要的任何div

  4. 那就是它。

答案 1 :(得分:0)

首先,您需要获得&#34; mylist&#34;对象然后你需要遍历&#34; myList&#34;然后再次使用JsonObject迭代器来获取键值对。

<s:iterator value="test.get('myList')" var="listJsonArray">
    <s:iterator value="listJsonArray" var="row">  
        <s:iterator value="row" var="jsonObject" > 
            <s:property/>
        </s:iterator> 
    </s:iterator> 
</s:iterator>