Struts2.0标签使用之

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[]

你可能感兴趣的:(checkbox)