jsp代碼如下:
<s:form action="receive.action" method="post">
?? <s:checkboxlist
?? id="user"
?? name="cheuser"
?? list="#request.userlist"
?? listKey="id"
?? listValue="name"
?? labelposition="left">
?? </s:checkboxlist>
?? <s:submit value="保存" align="center"></s:submit>
</s:form>
listKey和listValue是list存儲的bean的屬性
action接收方式:
private String[] cheuser = null;
public String[] getCheuser() {
?? return cheuser;
}
public void setCheuser(String[] cheuser) {
?? this.cheuser = cheuser;
}
通過數組接收
可以在接收方法里打印一下看看
public String receive() throws Exception {
????
?? if (cheuser!=null) {
????? for (int i = 0 ; i < cheuser.length ; i ++) {
??????????? System.out.println(cheuser[i]);
????? }
?? }
}
打出來的是復選框的ID值 非NAME值
用過structs2 checkboxlist標簽的同志一定知道,它默認的布局方式都是橫排的.但是如果我們想要每n個checkbox后要換一行,這就有問題了.當然解決的辦法是有的,只要改變checkboxblist.ftl(該文件在struts2-core-2.1.2.jar里)就好了.像這樣,你要讓它每輸出四個checkbox之后換行,那么你可以這樣改:
?2?<#if?parameters.list?exists>
?3?????<@s.iterator?value="parameters.list">
?4?????????<#assign?itemCount?=?itemCount?+?1/>
?5?????????<#if?parameters.listKey?exists>
?6?????????????<#assign?itemKey?=?stack.findValue(parameters.listKey)/>
?7?????????<#else>
?8?????????????<#assign?itemKey?=?stack.findValue('top')/>
?9?????????</#if>
10?????????<#if?parameters.listValue?exists>
11?????????????<#assign?itemValue?=?stack.findString(parameters.listValue)/>
12?????????<#else>
13?????????????<#assign?itemValue?=?stack.findString('top')/>
14?????????</#if>
15?<#assign?itemKeyStr=itemKey.toString()?/>
16?<#if?itemCount%5?==?0>
17?<tr>
18?</#if>
19?<td>
20?<input?type="checkbox"?name="${parameters.name?html}"?value="${itemKeyStr?html}"?id="${parameters.name?html}-${itemCount}"<#rt/>
21?????????<#if?tag.contains(parameters.namue,?itemKey)>
22??checked="checked"<#rt/>
23?????????</#if>
24?????????<#if?parameters.disabled?default(false)>
25??disabled="disabled"<#rt/>
26?????????</#if>
27?????????<#if?parameters.title?exists>
28??title="${parameters.title?html}"<#rt/>
29?????????</#if>
30?????????<#include?"/${parameters.templateDir}/simple/scripting-events.ftl"?/>
31?????????<#include?"/${parameters.templateDir}/simple/common-attributes.ftl"?/>
32?/>
33?<label?for="${parameters.name?html}-${itemCount}"?class="checkboxLabel">${itemValue?html}</label>
34?</td>
35?<#if?itemCount%4?==?0>
36?</tr>
37?</#if>
38?????</@s.iterator>
..小提示..checkboxlist會根據value屬性而確定哪個checkbox被選中,但前提是listKey的類型和value的類型要一致.
比如說<s:checkboxlist listKey="id" listValue="desc" name="multiCheck" value="checkedIndex"/>
符合的組合:
id: long
checkedIndex: long[]
??? id:String
??? checkedIndex:String[]