2010-03-22 110 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>