2016-02-19 38 views
0

我有一個迭代器內部的jsp頁面中的複選框。無論我嘗試什麼,即使當字段值的值是我想要的值時,複選框標記的屬性值也會保留「真」值。但我無法取回它。我只得到'真實'。從struts2中迭代器中的複選框獲取值

<s:iterator 
    id="pieceJointe" 
    value="listePiecesJointesTrouvees"> 
    <tr height="30"> 
     <td> 
      <s:property value="codeDemande" /> 
     </td> 
     <td 
      headers="actions" 
      class="center">   
      <s:checkbox 
      value="%{chemin}" 
      fieldvalue="%{chemin}"      
      name="checkbox" /> 
     </td>   
    </tr> 
</s:iterator> 

找回與字段集屬性變量chemin是一個我想要的。我可以用Web Inspector查看它,但我無法在代碼中看到它。我只回收'值'變量的值,這是絕對「真實」的值。

+0

你的值是否與fieldvalue相同,是兩個字段使用相同值的原因? –

+0

顯示你的動作;與此同時,請閱讀http://stackoverflow.com/a/35064012/1654265和http://stackoverflow.com/a/21827853/1654265以獲取關於複選框工作方式的一些提示 –

回答

0

當使用iterator標記來填充一個包含複選框之類的輸入元素的頁面時,可以使用value屬性來預先選中複選框的狀態。 fieldValue是不同的,它用於設置生成的HTML複選框的實際值,但s:checkbox是一個組合標記,它與HTML複選框標記一樣也會生成一個隱藏字段並將字段值設置爲它。因此,您不必使用valuefieldValue以及列表中的值。

再次,使用iterator標記與列表和要求提交這些值。您應該使用索引屬性名稱。此索引名稱用作請求中的參數名稱,並允許通過params interceptor填充到操作類的列表屬性。

<s:iterator 
    id="pieceJointe" 
    value="listePiecesJointesTrouvees" status="status"> 
    <tr height="30"> 
     <td> 
      <s:property value="codeDemande" /> 
     </td> 
     <td 
      headers="actions" 
      class="center">   
      <s:checkbox 
      value="%{chemin}" 
      name="listePiecesJointesTrouvees[%{#status.index}].chemin" /> 
     </td>   
    </tr> 
</s:iterator> 

確保你使用的攔截器,其中包括checkbox interceptor的默認堆棧。這個攔截器需要填寫未選中的值。

+0

您應該接受答案。 –