用过structs2 checkboxlist标签的同志一定知道,它默认的布局方式都是横排的.但是如果我们想要每n个checkbox后要换一行,这就有问题了.当然解决的办法是有的,只要改变checkboxblist.ftl就好了.像这样,你要让它每输出四个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.nameValue, 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[]