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之后换行,那么你可以这样改:
1
<#assign itemCount = 0/>
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[]