今天用到了两个iterator嵌套,内部的iterator还要引用外部iterator里的元素,但是两个iterator里都有同样的属性,例如name,例如:
<s:iterator value="areaList">
<div class="divider"></div>
<s:iterator value="taskResult"> <p>
${外部的areaList里的name}
</s:iterator>
<div class="divider"></div>
</s:iterator>
可以这样写:
<s:iterator value="areaList" id="obj">
<div class="divider"></div>
<s:iterator value="taskResult" id="son">{obj.name}
</s:iterator>
<div class="divider"></div>
</s:iterator>
接下来是更为复杂的,就是两层迭代器中还要套用if标签
我就直接上完成后的代码了:
<s:iterator value="areaList" id="obj">
<p>
<label>${obj.name}:</label>
</p>
<div class="divider"></div>
<s:iterator value="taskResult" id="son">
<p>
<!-- ${obj.id} -->
<s:if test="%{#obj.id == #son.area.id}">
<input type="checkbox" name="taskId" value="${id}">${name}
</s:if>
</p>
</s:iterator>
<div class="divider"></div>
</s:iterator>
<s:if test="%{#obj.id == #son.area.id}">中的%是告诉struts2“{}”中的#obj.id和#son.area.id不是普通的字符串,而是变量,而因为指定了迭代器的id 所以可以通过#id名.变量的形式来判断两个变量的值是否相当,注意本人开始犯了个重大的错误,将%{#obj.id == #son.area.id}写成了%{#obj.id }== %{#son.area.id},注意这样写是错误的。郭深原创,转载请著名出处http://shen84121062.iteye.com/blog/1180803