2016-02-19 39 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

您应该接受答案。 –