您的位置:首页 > 编程语言 > Java开发

Struts2.0标签使用之<s:checkboxlist/>

2010-05-21 12:36 477 查看
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[]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: