如何在Struts2中使用单选按钮检索所选行的值?

时间:2013-03-26 13:58:33

标签: java html jsp struts2 struts

我已经使用迭代器显示了一个表,每个行都有一个单选按钮,基于所选的行我想通过单击按钮执行编辑和删除操作。如何通过单击编辑或删除按钮来检索所选行中的所有值?

这是我的代码:

<s:iterator value="List" var="Bean">
        <tr> 
        <td><s:radio theme="simple" name="ID" list="#{'ID':''}"/>

        </td>
        <td ><s:property value="ID"/></td>
        <td ><s:property value="NAME"/></td>
        <td ><s:property value="STATUS"/></td>
        <td ><s:property value="TYPE"/></td>      
 </tr> 

</s:iterator>

使用s:radio我可以检索ID,但我想检索所选行中的所有值。

是否有任何可能的方法只为所选行设置bean,以便在动作类中检索其值?

ID不是唯一的,因此我无法使用它来检索我选择的行中的值

1 个答案:

答案 0 :(得分:0)

在您的代码中,您没有编辑功能,因为您使用的<s:property/>标记仅输出文本。

对于编辑功能,您需要一个交互式标记,例如<s:textfield/>

请注意,您的ListBean(以及所有属性)值均为非标准值,因为它们应以小写字母开头(getList() - &gt; {{1 },list - &gt; getBean())。请参阅JavaBeans标准,并使用CamelCase表示法。

bean

通过这种方式,你需要采取行动:

<s:iterator value="list" var="bean" status="ctr">
    <tr> 
        <td> <s:radio name="selectedId" list="#{'id':''}  
                      theme="simple" />                       </td>

        <td> <s:property value="id"/>                         </td>

        <td> <s:textfield name="bean[#ctr.index].name"/>      </td>
        <td> <s:textfield name="bean[#ctr.index].status"/>    </td>
        <td> <s:textfield name="bean[#ctr.index].type"/>      </td>
    </tr> 
</s:iterator>

您将通过循环列表并选取@Getter @Setter private Long selectedId; @Getter @Setter private List<MyObject> list; 字段与id匹配的记录来访问所选元素。

您可以使用迭代器selectedId属性而不是#ctr.index自动实现该属性,但必须同步列表;

您可以使用id代替列表,并使用Map作为键,并使用id作为值,以更好的方式自动实现这一目标。

享受