首页 > 学院 > 开发设计 > 正文

Struts2标签嵌套以及遍历双层list

2019-11-08 02:00:18
字体:
来源:转载
供稿:网友

今天碰到一个很有意思的问题,就是需要用Struts 2的iterator标签来遍历一个含有双层List的嵌套。

首先我们从最基础的说起,用iterator标签遍历一个List。

如果Action中有一个这样的不为null的属性:

[java] view plain copy PRint?private List<T> list;   private List<T> list;

那么在jsp中,就可以这样来遍历list:

[xhtml] view plain copy print?<s:iterator value=“list”>          <s:property value=“propertyNameOfObjectInList”></s:property>   </s:iterator>   <s:iterator value=”list”> <s:property value=”propertyNameOfObjectInList”></s:property> </s:iterator>

其中的propertyNameOfObjectInList是指list中对象的属性名。

下面我们再来看稍微复杂一点的情况,那就是嵌套使用iterator标签。

假设我们的Action中有如下属性:

[java] view plain copy print?private List<T> list1;  private List<T> list2;   private List<T> list1;private List<T> list2;

那么,我们可以在JSP页面上这样来遍历:

[xhtml] view plain copy print?<s:iterator value=“list1”>      <s:property value=“propertyNameOfObjectInList”></s:property>      <s:iterator value=“list2” id=“inner”>          <s:property value=“#inner.propertyNameOfObjectInList”></s:property>       </s:iterator>  </s:iterator>  <s:iterator value=”list1”> <s:property value=”propertyNameOfObjectInList”></s:property> <s:iterator value=”list2” id=”inner”> <s:property value=”#inner.propertyNameOfObjectInList”></s:property> </s:iterator></s:iterator>

请注意,我们必须给里层的iterator标签加上一个id属性,这样,才能通过#id.propertyNameOfObjectInList来取得我们需要的值。

下面是遍历双层List的情况。

假设Action中有如下属性:

[java] view plain copy print?private List<List<T>> list;   private List<List<T>> list;

那么,我们在JSP必须这样来遍历:

[xhtml] view plain copy print?<s:iterator value=“list”>      <s:iterator value=“top” id=“inner”>          <s:property value=“#inner.propertyNameOfObjectInList”></s:property>       </s:iterator>  </s:iterator>   <s:iterator value=”list”> <s:iterator value=”top” id=”inner”> <s:property value=”#inner.propertyNameOfObjectInList”></s:property> </s:iterator></s:iterator>

这种情况下,必须把内层的iterator标签的value属性设定为”top”!这个top就代表栈顶。然后再指定id属性,并用”#”作为前缀来取值。

我今天碰到的情况是这样,在Action中:

[java] view plain copy print?private List<T> list1;  private List<List<T>> list2;   private List<T> list1;private List<List<T>> list2;

所以当然就要这样遍历了:

[xhtml] view plain copy print?<s:iterator value=“list1”>      <s:property value=“propertyNameOfObjectInList”></s:property>       <s:iterator value=“list2”>          <s:iterator value=“top” id=“inner”>          <s:property value=“#inner.propertyNameOfObjectInList”></s:property>          </s:iterator>      </s:iterator>  </s:iterator>   <s:iterator value=”list1”> <s:property value=”propertyNameOfObjectInList”></s:property> <s:iterator value=”list2”> <s:iterator value=”top” id=”inner”> <s:property value=”#inner.propertyNameOfObjectInList”></s:property> </s:iterator> </s:iterator></s:iterator>

本文链接地址: http://www.psjay.com/Java-ee-struts-2-iterator-tag.html


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表