2010-03-22 130 views
1
TITLLE [...]
<logic:iterate id="listClient" name="Client"> 
<table> 
    <tr> 
    <td> 
    [...] 
    </td> 
    </tr> 
</table> 
</logic:iterate> 

但我有这个错误我第二次迭代错误迭代的JSP

的javax.servlet。 jsp.JspException:不能 为此集合创建迭代器

+0

不改变“名称”或“ID”的帮助?从客户端到客户端2? – 2010-03-22 09:45:37

+0

客户端是我的列表,我尝试更改ID,但我有相同的错误 – Mercer 2010-03-22 09:56:21

+0

客户定义为什么? – David 2010-03-22 09:56:37

回答

4

Cannot create iterator for this collection消息的ID由iterate标签抛出时,它是不能够创建您传递给它的集合的迭代器。

标签提取使用指定的名称从范围的对象,在这种情况下Client并开始检查它是​​什么类型:

物体或基元的
  • 阵列;
  • java.util.Collection;
  • java.util.Iterator;
  • java.util.Map;
  • java.util.Enumeration。

如果它发现这种对象类型之一,它会以适当的方式提取迭代器。如果以上都不符合,你会得到javax.servlet.jsp.JspException: Cannot create iterator for this collection

在这一点上,我同意Adeel Ansari的评论:“当你能够迭代一次而不是再次时,它对我没有任何意义。

您是否正在对两个迭代器标记之间的Client bean做些什么(即所呈现的代码是否与迭代器标记相关)?也许你用不是集合的东西来覆盖它?

1

您使用的是相同的id,改变第二个

+0

当我改变第二迭代器的ID我有相同的错误 javax.servlet.jsp.JspException:无法为此集合创建迭代器 – Mercer 2010-03-22 10:06:21

0

使用这种类型的iterater来解决这个问题.............

<tr> 
    <td><b>RECD from :</b>&nbsp;&nbsp;&nbsp;&nbsp; 
     <select name="vo.cuttingRecivedFrom" > 
      <option value="">select</option> 
      <logic:notEmpty name="storeList"> 
       <logic:iterate name="storeList" id="storeList1" indexId="count"> 
        <option value="<bean:write name="storeList1" property="storeName"/>"><bean:write name="storeList1" property="storeName"/></option> 
       </logic:iterate> 
      </logic:notEmpty> 
     </select> 
    </td> 
    <td><b>RECD in :</b>&nbsp;&nbsp;&nbsp;&nbsp; 
     <select name="vo.cuttingRecivedFrom" > 
      <option value="">select</option> 
      <logic:notEmpty name="storeList"> 
       <logic:iterate name="storeList" id="storeList1" indexId="count1"> 
        <option value="<bean:write name="storeList1" property="storeName"/>"><bean:write name="storeList1" property="storeName"/></option> 
       </logic:iterate> 
      </logic:notEmpty> 
     </select> 
    </td> 
</tr>