struts2里增加了一個新的UT標簽s:checkboxlist,下面介紹下使用方法。
s:checkboxlist用于畫面上顯示一組復選框,缺省是橫排輸出,后面將介紹如何修改ftl文件使得它能按任意方式輸出。
標簽格式:
<s:checkboxlist name="" list="" listKey="" listValue="" value="" />
name-定義標簽名,用于接收畫面上選中的復選框,故應與Action里定義的屬性一致,且多為數組;
list-定義集合變量,用于輸出復選框到畫面上,一般在Action里定義一個List或Map屬性;
listKey-如果在Action里定義的是一個List,則往往會在List里定義一個Bean,它只有兩個屬性,其中一個(比如id)就在這里設置;
如果在Action里定義的是一個Map,則Map的key就在這里設置;
listValue-如果在Action里定義的是一個List,則往往會在List里定義一個Bean,它只有兩個屬性,另外一個(比如name)就在這里設置;
如果在Action里定義的是一個Map,則Map的value就在這里設置;
value-用于回顯畫面上被選中的復選框,假如畫面有輸入檢查,如果有錯則返回原畫面并顯示出錯信息,這時候就需要使用它。
一般把它設成和name一致就可以了。
注意點:
為了能正確顯示已被選中的復選框,一定要使得name的數組類型與listKey的類型一致。
比如,name設成String[] users,則listKey就要設成String id;如果name設成Integer[] users,則listKey就要設成Integer id;
修改ftl文件改變輸出方式:
1.搜索struts2-core-xxx.jar,找到checkboxlist.ftl文件,拷貝出來;
2.在自己的工程的src下新建template.simple包,放置上述文件;
3.用文本編輯器打開該文件,修改成自己希望輸出的格式,保存,OK;
例子:
希望畫面上每3個復選框輸出為一行。
<#--
/*
* $Id: checkboxlist.ftl 804072 2009-08-14 03:16:35Z musachy $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
-->
<#assign itemCount = 0/>
<#if parameters.list?exists>
<@s.iterator value="parameters.list">
<#assign itemCount = itemCount + 1/>
<#if parameters.listKey?exists>
<#assign itemKey = stack.findValue(parameters.listKey)/>
<#else>
<#assign itemKey = stack.findValue('top')/>
</#if>
<#if parameters.listValue?exists>
<#assign itemValue = stack.findString(parameters.listValue)/>
<#else>
<#assign itemValue = stack.findString('top')/>
</#if>
<#assign itemKeyStr=itemKey.toString() />
<#if (itemCount-1)%3 == 0>
<tr>
</#if>
<td>
<input type="checkbox" name="${parameters.name?html}" value="${itemKeyStr?html}" id="${parameters.name?html}-${itemCount}"<#rt/>
<#if tag.contains(parameters.nameValue, itemKey)>
checked="checked"<#rt/>
</#if>
<#if parameters.disabled?default(false)>
disabled="disabled"<#rt/>
</#if>
<#if parameters.title?exists>
title="${parameters.title?html}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
<#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
/>
<label for="${parameters.name?html}-${itemCount}" class="checkboxLabel">${itemValue?html}</label>
</td>
<#if itemCount%3 == 0>
</tr>
</#if>
</@s.iterator>
</#if>
<input type="hidden" id="__multiselect_${parameters.id?html}" name="__multiselect_${parameters.name?html}" value=""<#rt/>
<#if parameters.disabled?default(false)>
disabled="disabled"<#rt/>
</#if>
/>
posted on 2011-06-14 12:18
secret_x15 閱讀(3155)
評論(0) 編輯 收藏 所屬分類:
java