<logic:iterate id="listClient" name="Client">
<table>
<tr>
<td>
[...]
</td>
</tr>
</table>
</logic:iterate>
但是我的第二次迭代出现了这个错误
javax.servlet.jsp.JspException:不能 为此集合创建迭代器
答案 0 :(得分:4)
当迭代标记无法为您传递给它的集合创建迭代器时,会抛出Cannot create iterator for this collection
消息。
标记使用指定的名称从作用域中提取对象,在本例中为Client
并开始检查它的类型:
如果找到其中一个对象类型,则以适当的方式提取迭代器。如果以上都不匹配,则会获得javax.servlet.jsp.JspException: Cannot create iterator for this collection
。
此时我同意Adeel Ansari的评论:“当你能够迭代一次,但不会再次”时,对我来说没有任何意义。“
你是否正在对两个迭代器标记之间的Client
bean做一些事情(即所呈现的代码是否与迭代器标记有关)?也许你用不是集合的东西覆盖它?
答案 1 :(得分:1)
您正在使用相同的id
,更改第二个的ID
答案 2 :(得分:0)
使用这种类型的迭代器来解决这个问题.............
<tr>
<td><b>RECD from :</b>
<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>
<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>