如何在 Struts2 迭代器中显示预选复选框

How to display preselected checkboxes in a Struts2 Iterator

我将列表显示为复选框。在此,应根据数据库值预先选中一些复选框。 如果我使用复选框列表,我可以实现这一点,但我只能在复选框后显示一个 属性(listValue) 。我需要在复选框后显示多个 属性。

<s:checkboxlist list="myList" name="checkboxes" listKey="id" listValue="name" value="selectedList"/>

这里 myList 有可用的复选框,selectedList 包含应该预先检查的键

那么如何使用迭代器中的复选框实现相同的功能...? 我试图显示可用复选框的代码是...

<s:iterator value="myList" var="record">
  <s:checkbox name="id" value="%{#record.id}"/>
  <s:property value="#record.name"/>
  <s:property value="#record.description"/>
</s:iterator> 

使用 <s:checkboxlist> 标签,您可以简单地连接 listValue 属性中的属性。

<s:checkboxlist list="myList" 
                name="checkboxes" 
                listKey="id" 
                listValue="name +' '+ description" 
                value="selectedList" />

如果您更喜欢自己遍历列表,请使用列表的 contains 方法将一些复选框设置为已选中。

请注意,<s:checkbox> 标签的 value 属性用于设置是否选中复选框。要设置将发送到服务器的值,您需要使用 fieldValue 属性。

<s:iterator value="records" var="record">
    <label>
        <s:checkbox name="id" 
                    fieldValue="%{#record.id}" 
                    value="selectedList.contains(#record.id)" />

        <s:property value="#record.name" />
        <s:property value="#record.description" />
    </label>
</s:iterator>

不要忘记标签,通过使用它们,您可以通过单击标签文本来选中复选框。