日期:2014-05-17  浏览次数:21017 次

关于JSP中用到struct2.0中的iterator标签
<s:iterator value="sonList" status="sList">
<tr>
  <td>
  <p><span class="STYLE1">${name}</span>
  <span class="STYLE1"><s:property value="id" id="ssid"/></span><br>
  <table width="180" height="20" border="0" cellpadding="0" cellspacing="0">
<s:iterator value="productList" id="lid" status="parser" >
<s:if test="#sList.index==1">
<!-- 迭代区 -->
<s:iterator value="lid" status="dlist" >
??????
<s:if test="#parser.index%2==0">
<tr>
</s:if> 
<td height="20"> <table width="90" border="0" cellspacing="0" cellpadding="2">
<tr>
<td width="74"><A href="product_content.dhtml product.id=${id}">${name},${id},${cid}</A></td>
</tr>
  </table></td>
</s:iterator>
</s:if>
</s:iterator>
 其中,sonList中的对象的ID是productList对象中的外键。要在“???”附近写判断(s:if)sonList中ID,和productList中的cid相等。要怎么把sonList中的对象的ID的值在里面一层的iterator表示出来?
  自己研究了很久都没做出来。请教各位高手。
  谢了!


------解决方案--------------------
<s:iterator value="sonList" id="son" status="sList"> 
<tr> 
<td> 
<p> <span class="STYLE1">${name} </span> 
<span class="STYLE1"> <s:property value="id" id="ssid"/> </span> <br> 
<table width="180" height="20" border="0" cellpadding="0" cellspacing="0"> 
<s:iterator value="productList" id="lid" status="parser" > 
<s:if test="#sList.index==1"> 
<!-- 迭代区 --> 
<s:iterator value="lid" status="dlist" > 
?????? 
<s:if test="#parser.index%2==0"> 
<tr> 
</s:if> 
<td height="20"> <table width="90" border="0" cellspacing="0" cellpadding="2"> 
<tr> 
<td width="74"> <A href="product_content.dhtml product.id=${id}">${name},${id},${cid} </A> </td> 
</tr> 
</table> </td> 
</s:iterator> 
</s:if> 你循环的一踏糊涂啊,根本看不懂,<s:iterator value="lid" status="dlist" > 这是在循环什么,已经是对象了还怎么循环
<s:if test="${son.id == lid.id}">
</s:iterator> 

------解决方案--------------------
struts2的嵌套迭代非常简单,只需照着以下代码修改一下
HTML code
<s:iterator value="#request.listMain" id="main">
                <s:property value="name"/> -- <s:property value="id"/>
        
                <s:iterator value="#listMain.details