如何检索struts2 checkboxlist值

时间:2013-07-25 11:52:21

标签: struts2 checkboxlist

我将使用checkboxlist创建一个列表。对于那些我使用以下代码的人:

<s:form action="accept" namespace="/manager/course">  
    <s:checkboxlist list="courseRequests" name="acceptList" listValue="studentNickname" listKey="studentId" theme="checkbox-fix"/>  
    <s:url action="accept" namespace="/manager/course" var="accList" />
    <s:a href="%{accList}"><s:text name="Accept"/> </s:a>
</s:form>

它可以很好地创建一个复选框列表,您可以在下面看到它的图片:
enter image description here

这是上面代码生成的HTML代码:

<form id="accept" name="accept" action="/ESA/manager/course/accept.action" method="post">
    <table class="wwFormTable">
    <table class="gradienttable">   
    <tr>
        <th class="row"><p>Row</p></th>
        <th style="width: 240px;"><p>Student</p></th>
        <th ><p>Accept</p></th>
    </tr>
    <tr>
         <td id="row"><p><label>1</label></p></td>
         <td style="width:250px;"><p>
                <label for="acceptList-1" class="checkboxLabel">Mansour Barzegar</label>
            </p></td>
         <td style="text-align:center;"><p>
                <input type="checkbox" name="acceptList" value="5" id="acceptList-1"                </p></td>
     </tr>
     <tr>
         <td id="row"><p><label>2</label></p></td>
         <td style="width:250px;"><p>
                <label for="acceptList-2" class="checkboxLabel">Ali Mahmoudi</label>
            </p></td>
         <td style="text-align:center;"><p>
                <input type="checkbox" name="acceptList" value="6" id="acceptList-2"                </p></td>
     </tr>
     <tr>
         <td id="row"><p><label>3</label></p></td>
         <td style="width:250px;"><p>
                <label for="acceptList-3" class="checkboxLabel">Masih Zare</label>
            </p></td>
         <td style="text-align:center;"><p>
                <input type="checkbox" name="acceptList" value="7" id="acceptList-3"                </p></td>
     </tr>
     </table>
     <a href="/ESA/manager/course/accept.action">Accept</a>
     </table>
</form>

在Action Class中,我尝试通过以下代码来检索seleced复选框值:

private int[] acceptList;
public void setAcceptList(int[] acceptList){
    this.acceptList=acceptList;
}  

以及其他几个代码但是我所有的状态都得到null。 我使用错误的代码吗?

1 个答案:

答案 0 :(得分:2)

在你的标记中,执行以下操作:

<input type="checkbox" name="thename" id="checkbox_id1" value="value1" />
<input type="checkbox" name="thename" id="checkbox_id2" value="value2" />

在你的行动(或对象)中执行此操作:

// action/object code...
Set<String> cbox = new HashSet();

public void setThename(String[] thenames) {
    for (String thename : thenames) {
        cbox.add(thename);
    }
}
// action/object code...

注意复选框名称与设置者名称匹配,例如元素名称== someName和方法== setSomeName

同样适用于Set&lt; Integer&gt;,但您使用int [] thenames作为参数。您也可以使用Integer [] thenames作为参数。


测试输出:

if (cbox != null) {
   for (String s : cbox) {
     log.info(s);
   }
}

http://struts.apache.org/release/2.2.x/docs/using-checkboxes.html