Struts2中checkboxlist标签――应用、实现换行

 最近刚刚进入公司、就应用到了没学习多久的Struts2框架!Struts1跟XW在学校的时候也没有接触过!刚刚做项目的时候、有点乱、不知道什么时候该做什么、该怎么做!现在基本上熟悉了Struts2的简单应用!看来、学习编程、做项目才是王道啊!

       先来看看checkboxlist标签、都有些什么属性:

       <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一致就可以了。但是在编辑页面的时候、我想的是显示出页面的时候、就让它把所有的选项全部示、          但是当前记录并没有选择所有的选项、我需要把选择了的选项在加载编辑页面的时候选中。那么就需要在后台设置一个数组、

 

在后台我用的是Map集合跟Long数组。

Map集合跟Long数组都需要在对应的Action设置get/set方法。

 

  
  
  
  
  1. /**  
  2.  * map对象用于显示页面checkboxlist  
  3.  */   
  4. private Map mapMeetMent;   
  5. public Map getMapMeetMent() {   
  6.     return mapMeetMent;   
  7. }   
  8. public void setMapMeetMent(Map mapMeetMent) {   
  9.     this.mapMeetMent = mapMeetMent;   
  10. }   
  11.    
  12. /**  
  13.  * 选择checkboxlist的数组  
  14.  * 用来存储、当前查询会议设施编号  
  15.  */   
  16. private Long[] intarray;   
  17. public Long[] getIntarray() {   
  18.     return intarray;   
  19. }   
  20. public void setIntarray(Long[] intarray) {   
  21.     this.intarray = intarray;   
  22. }   
  23.    
  24.         //ecid获取会议设施信息   
  25.     List list = mentService.getMent(ecId);   
  26.    
  27.     //根据会议资源编号跟ecid获取会议设施信息(用来表示该项需要选中)   
  28.     List listCheck = mentService.getMent(ecId,lo);   
  29.     if(null != listCheck && listCheck.size() > 0){   
  30.         this.intarray = new Long[listCheck.size()] ;   
  31.         for (int i = 0; i < listCheck.size(); i++) {   
  32.             Object [] o = (Object[])listCheck.get(i);   
  33.             this.intarray[i] = Long.valueOf(o[0]+"");   
  34.         }   
  35.         ActionContext.getContext().put("intarray"this.intarray);   
  36.     }   
  37.    
  38.     if(list != null && list.size() > 0) {   
  39.         //循环将信息添加到Map集合内   
  40.         map.clear();   
  41.         for(int i = 0; i < list.size();i++) {   
  42.             Object[] o = (Object[])list.get(i);   
  43.             map.put(o[0], o[1]);   
  44.         }   
  45.         //将Map集合set到mapMeetMent属性中   
  46.         this.setMapMeetMent(map);   
  47.     }else{   
  48.         map.clear();   
  49.         map.put(0"请添加设施");   
  50.     }   

页面代码:

 

  
  
  
  
  1. <s:checkboxlist list="mapMeetMent" listKey="key" listValue="value"    
  2.          name="tbmeetroom.tbmeethaseqipments" value="#intarray"></s:checkboxlist> 

这样出来过后、现在每次在编辑页面上显示的选项太多了!

上网查了一下~~~!

修改ftl文件改变输出方式:
    1.搜索struts2-core-xxx.jar,找到checkboxlist.ftl文件,拷贝出来;
    2.在自己的工程的src下新建template.simple包,放置上述文件;
    3.用文本编辑器打开该文件,修改成自己希望输出的格式,保存,OK;
例子:
    希望画面上每3个复选框输出为一行。

 

  
  
  
  
  1. <#-- 
  2. /* 
  3.  * $Id: checkboxlist.ftl 804072 2009-08-14 03:16:35Z musachy $ 
  4.  * 
  5.  * Licensed to the Apache Software Foundation (ASF) under one 
  6.  * or more contributor license agreements.  See the NOTICE file 
  7.  * distributed with this work for additional information 
  8.  * regarding copyright ownership.  The ASF licenses this file 
  9.  * to you under the Apache License, Version 2.0 (the 
  10.  * "License"); you may not use this file except in compliance 
  11.  * with the License.  You may obtain a copy of the License at 
  12.  * 
  13.  *  http://www.apache.org/licenses/LICENSE-2.0 
  14.  * 
  15.  * Unless required by applicable law or agreed to in writing, 
  16.  * software distributed under the License is distributed on an 
  17.  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
  18.  * KIND, either express or implied.  See the License for the 
  19.  * specific language governing permissions and limitations 
  20.  * under the License. 
  21.  */ 
  22. --> 
  23. <#assign itemCount = 0/> 
  24. <#if parameters.list?exists> 
  25.      <@s.iterator value="parameters.list"> 
  26.          <#assign itemCountitemCount = itemCount + 1/> 
  27.          <#if parameters.listKey?exists> 
  28.              <#assign itemKey = stack.findValue(parameters.listKey)/> 
  29.          <#else> 
  30.              <#assign itemKey = stack.findValue('top')/> 
  31.          </#if> 
  32.          <#if parameters.listValue?exists> 
  33.              <#assign itemValue = stack.findString(parameters.listValue)/> 
  34.          <#else> 
  35.              <#assign itemValue = stack.findString('top')/> 
  36.          </#if> 
  37.  <#assign itemKeyitemKeyStr=itemKey.toString() /> 
  38.  <#if (itemCount-1)%3 == 0> 
  39.  <tr> 
  40.  </#if> 
  41.  <td> 
  42.  <input type="checkbox" name="${parameters.name?html}" value="${itemKeyStr?html}" id="${parameters.name?html}-${itemCount}"<#rt/> 
  43.          <#if tag.contains(parameters.nameValue, itemKey)> 
  44.   checked="checked"<#rt/> 
  45.          </#if> 
  46.          <#if parameters.disabled?default(false)> 
  47.   disabled="disabled"<#rt/> 
  48.          </#if> 
  49.          <#if parameters.title?exists> 
  50.   title="${parameters.title?html}"<#rt/> 
  51.          </#if> 
  52.          <#include "/${parameters.templateDir}/simple/scripting-events.ftl" /> 
  53.          <#include "/${parameters.templateDir}/simple/common-attributes.ftl" /> 
  54.  /> 
  55.  <label for="${parameters.name?html}-${itemCount}" class="checkboxLabel">${itemValue?html}</label> 
  56.  </td> 
  57.  <#if itemCount%3 == 0> 
  58.  </tr> 
  59.  </#if> 
  60.      </@s.iterator> 
  61. </#if> 
  62. <input type="hidden" id="__multiselect_${parameters.id?html}" name="__multiselect_${parameters.name?html}" value=""<#rt/> 
  63. <#if parameters.disabled?default(false)> 
  64.  disabled="disabled"<#rt/> 
  65. </#if> 
  66.  /> 
关于checkboxlist.ftl文件应用是在网络上找到。

 

你可能感兴趣的:(Web,struts2,标签,J2EE,休闲)