Struts2标签库

Struts2标签库常用标签
基本概述
     对于一个MVC框架而言,重点是实现两部分:业务逻辑控制器部分和视图页面部分。Struts2作为一个优秀的MVC框架,也把重点放在了这两部分上。控制器主要由Action来提供支持,而视图则是由大量的标签来提供支持。
     在JavaWeb中,Struts2标签库是一个比较完善,而且功能强大的标签库,它将所有标签都统一到一个标签库中,从而简化了标签的使用,它还提供主题和模板的支持,极大地简化了视图页面代码的编写,同时它还提供对ajax的支持,大大的丰富了视图的表现效果。与JSTL(JSP Standard Library,JSP 标准标签库)相比,Struts2标签库更加易用和强大。

PS:使用标签,需要引入Struts2核心jar包,在jsp头部,加入<%@ taglib uri="/struts-tags" prefix="s" %>
 
Struts2的模板和主题
     Struts2的UI标签都是基于模板和主题的。所谓模板,就是一些代码,Struts2标签使用这些代码渲染生成相应的HTML代码。模板是一个UI标签的外在表现形式,并且每个标签都会有自己对应的模板。如果为所有的UI标签提供样式和视觉效果相似的模板, 那么这一系列的模板就形成了一个主题。
     Struts2 默认提供了4 种主题,分别为 simple、xhtml、css_xhtml和Ajax。
  • simple主题:这是最简单的主题,使用该主题时,每个UI标签只生成最基本的HTML元素,没有任何附加功能。
  • xhtml主题:这是Struts2的默认主题,它对simple主题进行了扩展,提供了布局功能、Label显示名称、以及与验证框架和 国际化框架的集成。
  • css_xhtml:该主题是xhtml的扩展,在对xhtml的基础之上添加对CSS的支持和控制。
  • Ajax:继承自对xhtml,提供 Ajax支持。

这4种内建主题中,xhtml为默认主题,但xhtml有一定的局限性。因为它使用表格进行布局,并且只支持每一行放一个表单项,这样一来,一旦遇到复杂的页面布局,xhtml就难以胜任了。此时,就需要改变Struts2的默认主题。
     通常,通过设置常量struts.ui.theme,来改变默认主题,具体做法是在struts.xml或者struts.properties文件中增加相应的配置。比如想要设置使用simple的主题,那么需要在struts.xml中增加如下配置:
[html] view plain copy
  1. <constant name="struts.ui.theme" value="simple"/>  

或者在struts.properties文件中增加如下配置:
[plain] view plain copy
  1. struts.ui.theme=simple  

Struts2标签库的分类
Struts2标签库

控制标签

if-elseif-else
[html] view plain copy
  1. <%--1、if elseif else的使用 --%>  
  2. <% //存入请求域中一个学生的成绩  
  3.     request.setAttribute("score", 89);  
  4. %>  
  5. <!-- 判断学生成绩,输出成绩所对应的ABCD -->  
  6. <s:if test="#request.score>90">  
  7.     优秀  
  8. </s:if>  
  9. <s:elseif test="#request.score>80">  
  10.     良好  
  11. </s:elseif>  
  12. <s:else>  
  13.     一般  
  14. </s:else>  

iterator
[html] view plain copy
  1. <s:iterator value="customers">  
  2. <%--s:iterator是struts2的一个迭代标签,它的value属性取值是一个OGNL表达式  
  3. var属性:它的取值就是一个普通的字符串.  
  4. 用了var:把每次遍历的对象作为value,把var的值作为key,存入ContextMap中  
  5. 没用var:把每次遍历的对象压入栈顶,再下次遍历之前弹栈(从栈顶移走)。  
  6. begin:开始遍历的索引  
  7. end:遍历的结束索引  
  8. step:遍历的步长。   
  9. status:计数器对象  
  10.     count 已经遍历的集合元素个数  
  11.     index 当前遍历元素的索引值  
  12.     odd   是否奇数行  
  13.     even  是否偶数行  
  14.     first 是否第一行  
  15.     last  是否最后一行  
  16. --%>  
  17.      <TR style="FONT-WEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: white; TEXT-DECORATION: none">  
  18.           <TD><s:property value="custName"/></TD>  
  19.           <TD><s:property value="custLevel"/></TD>  
  20.           <TD><s:property value="custSource"/></TD>  
  21.           <TD><s:property value="custIndustry"/</TD>  
  22.           <TD><s:property value="custAddress"/></TD>  
  23.           <TD><s:property value="custPhone"/></TD>  
  24.      </TR>  
  25. </s:iterator>  

数据标签

property
  • id:可选属性,指定该元素的标识。
  • default:可选属性,如果要输出的属性值为null,则显示default属性的指定值。
  • escape:可选属性,指定是否忽略HTML代码。
  • value:可选属性,指定需要输出的属性值,如果没有指定该属性,则默认输出ValueStack栈顶的值
[html] view plain copy
  1. <%-- 输出值栈中的值 --%>  
  2. <s:property value="custName"/>  

a
[html] view plain copy
  1. <%--使用struts2的超链接标签发送请求:  
  2.     <s:a>连接内容</s:a>  
  3.     属性:  
  4.     href:指定url路径  
  5.     action:请求的动作名称(类名)  
  6.     namespace:动作名称所在的名称空间  
  7.     id:指定id  
  8.     method:指定Action调用方法  
  9.  --%>  
  10.  <s:a action="addUIUser" namespace="/user">添加用户</s:a>  
  11.  <s:a action="editUIUser" namespace="/user"> 编辑用户  
  12.      <s:param name="userid" value="%{'1'}"></s:param>  
  13.  </s:a>  
  14.  <a href="${pageContext.request.contextPath}/user/editUIUser.action?userid=1">原始超链接标签-编辑用户</a>  

debug
     debug标签用于调试Struts2,使用它会在页面中生成一个debug标签,点击后会显示服务器各种对象信息,包括值栈、ContextMap等。
[html] view plain copy
  1. <s:debug/>  

date
[html] view plain copy
  1. <%--s:date标签的使用:  
  2.     它是用于格式化输出日期  
  3.     name属性:取值是一个ognl表达式,表示要格式化的日期对象  
  4.     format属性:指定格式  
  5.     var属性:取值是一个普通的字符串。  
  6.            把格式化好的日期字符串作为value,把var的取值作为key。存入contextMap中  
  7. --%>  
  8. <% request.setAttribute("myDate",new Date());  
  9.   /*  SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");  
  10.    String date = format.format(new Date());  
  11.    out.println(date); */  
  12. %>  
  13. ${requestScope.myDate}<br/>  
  14. <s:property value="#request.myDate"/>  
  15. <s:date name="#request.myDate" format="yyyy年MM月dd日" var="sdate"/>  
  16. <br>  
  17. 格式化后的日期:<s:property value="#sdate"/>  
  18. <br/>  
  19. ${sdate}  

url
[html] view plain copy
  1. <%-- url标签  
  2.     作用:用于存放一个路径  
  3.     属性:  
  4.         action:动作名称  
  5.         namespace:名称空间  
  6.         var:取值是一个普通字符串。他会把action和namespace组成一个url作为value,把var的取值作为一个key,存入contextMap中  
  7. --%>  
  8. <s:url action="addUIUser" namespace="/user" var="myurl"/>  
  9. <a href="<s:property value='#myurl'/>">添加用户——url</a>  

表单标签
表单标签的通用属性
属性名
主题
数据类型
说明
title
simple
String
设置表单元素的title属性
disabled
simple
String
设置表单元素是否可用
label
xhtml
String
设置表单元素的label属性
labelPosition
xhtml
String
设置label元素的显示位置,可选值 : top 和 left(默认)
name
simple
String
设置表单元素的name属性,与Action中的属性名对应
value
simple
String
设置表单元素的值
cssClass
simple
String
设置表单元素的class
cssStyle
simple
String
设置表单元素的style属性
required
xhtml
Boolean
设置表单元素为必填项
requiredpositon
xhtml
String
设置必填标记(默认为*)相对于label元素的位置,可选值:left 和right(默认)
tabindex
simple
String
设置表单元素的tabindex属性

<form>标签的常用属性及描述
属性名
是否必填
类型
说明
action
String
指定提交时对应的action,不需要action后缀
enctype
String
HTML表单enctype属性
method
String
HTML表单method属性
namespace
String
所提交action的命名空间

<s:submit>标签的常用属性
属性名
是否必填
类型
说明
action
String
指定提交时对应的action
method
String
指定action中调用的方法

<s:password>标签的常用属性说明
属性名
说明
Name
用于指定密码输入框的名称
Size
用于指定密码输入框的显示宽度,以字符数为单位
MaxLength
用于限定密码输入框的最大输入字符串个数
showPassword
是否显示初始值,即使显示也仍为密文显示,用掩码代替

<s:radio>标签的属性及说明
属性名
是否必填
类型
说明
List
Cellection、Map、Enmumeration、Iterator,array
用于生成单选框中的集合
listKey
String
指定集合对象中的哪个属性作为选项的value
listValue
String
指定集合对象中的哪个属性作为选项的内容

<s:checkboxlist>标签的常用属性及说明
属性名
是否必填
类型
说明
name
String
指定该元素的name
list
Cellection、Map、Enmumeration、Iterator,array
用于生成多选框的集合
listKey
String
生成checkbox的value属性
listValue
String
生成checkbox后面显示的文字

select标签的常用属性及说明
属性名
是否必填
类型
说明
list
Cellection、Map、Enmumeration、Iterator,array
用于生成下拉框的集合
listKey
String
生成选项的value属性
listValue
Strmg
生成选项的显示文字
headerKey
String
在所有的选项前再加额外的一个选项作为其标题的value值
headerValue
String
显示在页面中header选项的内容
Multiple
Boolean
指定是否多选,默认为 false
emptyOption
Boolean
是否在标题和真实的选项之间加一个空选项
size
Int
下拉框的高度,即最多可以同时显示多少个选项

Iterator(迭代)

描述:用于遍历集合(java.util.Collection)或枚举值(java.util.iterator)

参数

 

名称

必需

默认

类型

描述

status

 

 

 

String

如果设置此参数,一个IteratorStatus的实例将会压入每一个遍历的堆栈

value

 

 

Object/String

 

要遍历的可枚举的(iteratable)数据源,或者将放入的新列表(List)的对想

id

 

 

Object/String

 

用来标识元素的id。在ui和表单中为HTML的id属性

 

I18n(国际化操作)

描述:

加载资源包到值堆栈。它可以允许text标志访问任何资源包的信息。而不只当前的action相关联的资源包。

 

名称

必需

默认

类型

描述

name

 

 

 

Object/String

 

资源包的类路径(如com.xxxx.resources.AppMsg)

id

 

 

 

Object/String

 

用来标识元素的id。在ui和表单中为HTML的id属性

Include

描述:包含一个servlet的输出(servlet或jsp的页面)

 

名称

必需

默认

类型

描述

value

 

String

要包含的jsp页面或servlet

id

 

Object/String

用来标识元素的id。在ui和表单中为HTML的id属性

 

param

 

描述:属性是可选的,如果提供,会调用Component的方法,addParameter(String,Object),如果不提供,则外层嵌套标签必须实现UnnamedParametric接口。

Value的提供有两种方式,通过value属性或者标签中间的text,不同之处:

<s:param name="name">zhaosoft</s:param>

参数会以String的格式放入statck

<s:param name="name" value="zhaosoft"/>

该值会以java.lang.Object的格式放入statck

 

名称

必需

默认

类型

描述

name

 

 

 

String

 

参数名

 

value

 

String

value表达式

id

 

 

 

Object/String

 

用来标识元素的id。在ui和表单中为HTML的id属性

 

set

描述:set标签赋予变量一个特定范围内的值。当希望给一个变量赋一个复杂的表达式,每次访问该变量而不是复杂的表达式时用到。其在两种情况下非常有用:复杂的表达式很耗时(性能提升)或者很难理解(代码的可读性提高)

 

参数:

 

名称

必需

默认

类型

描述

name

 

String

变量名字

scope

 

String

变量作用域,可以为application,session,request,page,action

value

 

Object/String

将会赋给变量的值

id

 

Object/String

用来标识元素的id。在ui和表单中为HTML的id属性

 

Text

描述:支持国际化信息的标签。国际化信息必须放在一个和当前action同名的resource bundle中,如果没有找到相应message,tag body将被当作默认的message,如果没有tag body,message的name会被作为默认message.

 

名称

必需

默认

类型

描述

name

 

String

资源属性的名字

id

 

Object/String

用来标识元素的id。在ui和表单中为HTML的id属性

 

url

 

描述:该标签用于创建url,可以通过”param”标签提供request参数。

当includeParams的值是all或get,param标签中定义的参数将有优先权,也就是说其会覆盖其他同名参数的值。

 

UI标志

单行文本框

Textfield标签输出一个HTML单行文本输入控件,等价于HTML代码<input type=”text”>

 

名称

必需

默认

类型

描述

maxlength

Integer

文本输入控件可以输入字符的最大长度

readonly

false

Boolean

当该属性为true时,不能输入

size

Integer

指定可视尺寸

id

 

Object/String

用来标识元素的id。在ui和表单中为HTML的id属性

 

例子:

<s:form action="register" method="post">

    <s:textfield name="username" label="用户名"></s:textfield>

</s:form>

 

文本框区

Textarea标签输出一个HTML多行文本输入控件,等价于HTML代码:<textarea />

 

 

名称

必需

默认

类型

描述

cols

Integer

列数

rows

Integer

行数

readonly

false

Boolean

当该属性为true时,不能输入

wrap

false

Boolean

指定多行文本输入控件是否应该换行

id

 

 

 

Object/String

 

用来标识元素的id。在ui和表单中为HTML的id属性

 

 

例子:

<s:textarea name="personal" cols="10" rows="5" label="个人简历"></s:textarea>

 

下拉列表

s:select 标签输出一个下拉列表框,相当于HTML代码中的<select/>

 

名称

必需

默认

类型

描述

list

Cellection Map Enumeration Iterator array

要迭代的集合,使用集合中的元素来设置各个选项,如果list的属性为Map则Map的key成为选项的value,Map的value会成为选项的内容

listKey

String

指定集合对象中的哪个属性作为选项的value

listValue

String

指定集合对象中的哪个属性作为选项的内容

headerKey

String

设置当用户选择了header选项时,提交的的value,如果使用该属性,不能为该属性设置

空值

headerValue

String

显示在页面中header选项内容

emptyOption

 

 

false

 

Boolean

 

是否在header选项后面添加一个空选项

multiple

false

Boolean

是否多选

size

Integer

显示的选项个数

例子:

[xml] view plain copy
  1. <%@ page contentType="text/html;charset=GBK" %>  
  2.   
  3. <%@ taglib prefix="s" uri="/struts-tags" %>  
  4.   
  5. <h3>使用name和list属性,list属性的值是一个列表</h3>  
  6.   
  7. <s:form>  
  8.   
  9.     <s:select label="最高学历" name="education" list="{'高中','大学','硕士','博士'}"/>  
  10.   
  11. </s:form>  
  12.   
  13. <h3>使用name和list属性,list属性的值是一个Map</h3>  
  14.   
  15. <s:form>  
  16.   
  17.     <s:select label="最高学历" name="education" list="#{1:'高中',2:'大学',3:'硕士',4:'博士'}"/>  
  18.   
  19. </s:form>  
  20.   
  21. <h3>使用headerKey和headerValue属性设置header选项</h3>  
  22.   
  23. <s:form>  
  24.   
  25.    <s:select label="最高学历" name="education" list="{'高中','大学','硕士','博士'}"  
  26.   
  27.        headerKey="-1" headerValue="请选择您的学历"/>  
  28.   
  29. </s:form>  
  30.   
  31. <h3>使用emptyOption属性在header选项后添加一个空的选项</h3>  
  32.   
  33. <s:form>  
  34.   
  35.     <s:select label="最高学历" name="education" list="{'高中','大学','硕士','博士'}"  
  36.   
  37.        headerKey="-1" headerValue="请选择您的学历"  
  38.   
  39.        emptyOption="true"/>  
  40.   
  41. </s:form>  
  42.   
  43. <h3>使用multiple属性设置多选</h3>  
  44.   
  45. <s:form>  
  46.   
  47.     <s:select label="最高学历" name="education" list="{'高中','大学','硕士','博士'}"  
  48.   
  49.        headerKey="-1" headerValue="请选择您的学历"  
  50.   
  51.        emptyOption="true"  
  52.   
  53.        multiple="true"/>  
  54.   
  55. </s:form>  
  56.   
  57. <h3>使用size属性设置下拉框可显示的选项个数</h3>  
  58.   
  59. <s:form>  
  60.   
  61.     <s:select label="最高学历" name="education" list="{'高中','大学','硕士','博士'}"  
  62.   
  63.        headerKey="-1" headerValue="请选择您的学历"  
  64.   
  65.        emptyOption="true"  
  66.   
  67.        multiple="true" size="8"/>  
  68.   
  69. </s:form>  
  70.   
  71. <h3>使用listKey和listValue属性,利用Action实例的属性(property)来设置选项的值和选项的内容</h3>  
  72.   
  73. <s:form>  
  74.   
  75.     <s:select label="最高学历" name="education" list="educations"  
  76.   
  77.        listKey="id" listValue="name"/>  
  78.   
  79. </s:form>  

 

doubleselect标签

 

doubleselect标签输出关联的两个HTML列表框,产生联动效果。

 

名称

必需

默认

类型

描述

list

Cellection Map Enumeration Iterator array

要迭代的集合,使用集合中的元素来设置各个选项,如果list的属性为Map则Map的key成为选项的value,Map的value会成为选项的内容

listKey

 

 

 

String

 

指定集合对象中的哪个属性作为选项的value,该选项只对第一个列表框起作用

listValue

 

 

 

String

 

指定集合对象中的哪个属性作为选项的内容,该选项只对第一个列表框起作用

headerKey

 

 

 

String

 

设置当用户选择了header选项时,提交的的value,如果使用该属性,不能为该属性设置空值

headerValue

String

显示在页面中header选项内容

emptyOption

false

Boolean

 

multiple

false

Boolean

是否多选

size

Integer

显示的选项个数,该选项只对第一个列表框起作用

doubleId

String

指定第二个列表框的ID

doubleList

 

 

 

Cellection Map Enumeration Iterator array

要迭代的集合

 

doubleListKey

 

 

 

String

 

指定集合对象中的哪个属性作为选项的value,该选项只对第二个列表框起作用

doubleListValue

 

 

 

String

 

指定集合对象中的哪个属性作为选项的内容,该选项只对第二个列表框起作用

doubleSize

Integer

选项个数

doubleName

String

指定第二个列表框的name映射

doubleValue

Object

第二个列表框的初始选种项

实例:

[xml] view plain copy
  1. <s:form name="test">  
  2.   
  3. <s:doubleselect label="请选择所在省市"  
  4.   
  5.    name="province" list="{'四川省','山东省'}" doubleName="city"  
  6.   
  7.    doubleList="top == '四川省' ? {'成都市', '绵阳市'} : {'济南市', '青岛市'}" />  
  8.   
  9. </s:form>  
  10.   
  11. <s:form action="doubleselectTag">  
  12.   
  13. <s:doubleselect  
  14.   
  15.         label="请选择所在省市"  
  16.   
  17.         name="province"  
  18.   
  19.         list="provinces"  
  20.   
  21.         listKey="id"  
  22.   
  23.         listValue="name"  
  24.   
  25.         doubleList="cities"  
  26.   
  27.         doubleListKey="id"  
  28.   
  29.         doubleListValue="name"  
  30.   
  31.         doubleName="city"  
  32.   
  33.         headerKey="-1"  
  34.   
  35.         headerValue="---------- 请选择 ----------"  
  36.   
  37.         emptyOption="true" />  
  38.   
  39. </s:form>  

复选框

 

名称

必需

默认

类型

描述

fieldValue

 

 

true

 

String

 

指定在复选框选中时,实际提交的值

 

 

复选框组,对应Action中的集合

 

名称

必需

默认

类型

描述

list

 

 

 

Cellection Map Enumeration Iterator array

要迭代的集合,使用集合中的元素来设置各个选项,如果list的属性为Map则Map的key成为选项的value,Map的value会成为选项的内容

listKey

String

指定集合对象中的哪个属性作为选项的value

listValue

 

 

 

String

 

指定集合对象中的哪个属性作为选项的内容

 

 

例子:checkboxlistTag.jsp

[xml] view plain copy
  1. <%@ page contentType="text/html;charset=GBK" %>  
  2.   
  3. <%@ taglib prefix="s" uri="/struts-tags" %>  
  4.   
  5. <s:form>  
  6.   
  7.     <s:checkboxlist name="interest" list="{'足球','篮球','排球','游泳'}" label="兴趣爱好"/>  
  8.   
  9. </s:form>  

 

文件选择组建

file标签输出一个HTML文件选择框。

 

名称

必需

默认

类型

描述

accept

 

 

input

 

String

 

HTML accept属性,指出接受文件的MIME类型

 

 

按钮

Submit标签输出一个按钮,submit标签和form标签使用可以提供异步表单提交功能。Submit标签可以输出以下三种类型的提交按钮:

Input: 等价于 HTML代码<input type=”submit”>

Image: 等价于 HTML代码 <input type="image">

Button:<button type="submit"></button>

 

名称

必需

默认

类型

描述

type

 

 

input

 

String

 

要使用的提交按钮的类型,有效值:input button image

src

 

 

 

String

 

为image类型的提交按钮设置图片地址。该属性对input和button类型的提交按钮无效

action

String

指定处理提交请求的action

method

String

指定处理提交请求的action的方法

 

实例

实例1.

<s:submit type="image" method="login" src="images/login.jpg"></s:submit>

页面输出:

<input type="image" alt="Submit" src="images/login.jpg" id="user__login" name="method:login" value="Submit"/>

 

实例2.<s:submit type="button" action="selectTag" method="login" label="登陆"></s:submit>

页面输出:

<button type="submit" id="user_selectTag_login" name="action:selectTag!login" value="Submit">登陆</button>

 

Struts2预定义的前缀:

1。method   method:login

使用method前缀,来取代action默认的execute()方法的执行。

[xml] view plain copy
  1. <s:form action="user">  
  2.   
  3.    <s:textfield name="user.username" label="用户名"></s:textfield>  
  4.   
  5.    <s:textfield name="user.password" label="密码"></s:textfield>  
  6.   
  7.    <s:submit value="登陆" name="method:login"></s:submit>  
  8.   
  9.    <s:submit value="注册" name="method:register"></s:submit>  
  10.   
  11. </s:form>  

注意:1。input类型的按钮,不能用label设置按钮上的文本,只能用value

2、action前缀

使用action前缀,取代form标签指定的action,导向到另一个action进行处理。

[xml] view plain copy
  1. <s:form action="login">  
  2.   
  3.    <s:textfield name="user.username" label="用户名"></s:textfield>  
  4.   
  5.    <s:textfield name="user.password" label="密码"></s:textfield>  
  6.   
  7.    <s:submit value="登陆"></s:submit>  
  8.   
  9.    <s:submit value="注册" name="action:register"></s:submit>  
  10.   
  11. </s:form>  

 

 

 

2、redirect前缀

使用redirect前缀请求重定向到其他的url,甚至可以是web英语程序外部的url。

[xml] view plain copy
  1. <s:form action="login">  
  2.   
  3.    <s:textfield name="user.username" label="用户名"></s:textfield>  
  4.   
  5.    <s:textfield name="user.password" label="密码"></s:textfield>  
  6.   
  7.    <s:submit value="登陆"></s:submit>  
  8.   
  9.    <s:submit value="搜索" name="redirect:www.google.com"></s:submit>  
  10.   
  11. </s:form>  

 

 

 

2、redirect-action前缀

使用redirect-action前缀请求重定向到其他的action.

[xml] view plain copy
  1. <s:form action="login">  
  2.   
  3.    <s:textfield name="user.username" label="用户名"></s:textfield>  
  4.   
  5.    <s:textfield name="user.password" label="密码"></s:textfield>  
  6.   
  7.    <s:submit value="登陆"></s:submit>  
  8.   
  9.    <s:submit value="搜索" name="redirect-action:register"></s:submit>  
  10.   
  11. </s:form>  

reset标签

reset标签输出一个重置按钮

 

名称

必需

默认

类型

描述

type

input

String

要使用的重置按钮的内容,input、button

 

<s:reset value="重置"></s:reset>

<s:reset type="button" label="重置"></s:reset>

 

updownselect标签

updownselect标签创建一个带有上下移动的按钮的列表框,可以通过上下移动按钮来调整列表框的选项的位置。

 

名称

必需

默认

类型

描述

list

 

 

 

Cellection Map Enumeration Iterator array

要迭代的集合,使用集合中的元素来设置各个选项,如果list的属性为Map则Map的key成为选项的value,Map的value会成为选项的内容

listKey

String

指定集合对象中的哪个属性作为选项的value

listValue

String

指定集合对象中的哪个属性作为选项的内容

headerKey

String

设置当用户选择了header选项时,提交的的value,如果使用该属性,不能为该属性设置空值

headerValue

String

显示在页面中header选项内容

emptyOption

 

 

false

 

Boolean

 

是否在header选项后面添加一个空选项

multiple

false

Boolean

是否多选

size

Integer

显示的选项个数

moveUplabel

 

String

设置向上移动按钮上的文本

moveDownLabel

 

String

设置向下移动按钮上的文本

selectAllLabel

 

String

设置向全部选择按钮上的文本

allowMoveUp

Boolean

设置是否使用向上移动按钮

allowMoveDown

Boolean

设置是否使用向下移动按钮

allowSelectAll

Boolean

设置是否使用全部选择按钮

 

实例:

[xml] view plain copy
  1. <s:form>  
  2.   
  3. <!-- 使用简单集合来生成可上下移动选项的下拉选择框 -->  
  4.   
  5. <s:updownselect name="a" label="请选择您喜欢的图书" labelposition="top"  
  6.   
  7.     moveUpLabel="向上移动"  
  8.   
  9.     list="{'Spring2.0宝典' , '轻量级J2EE企业应用实战' , 'JavaScript: The Definitive Guide'}"/>  
  10.   
  11.     
  12.   
  13. <!-- 使用简单Map对象来生成可上下移动选项的下拉选择框  
  14.   
  15.      且使用emptyOption="true"增加一个空选项-->  
  16.   
  17. <s:updownselect name="b" label="请选择您想选择出版日期" labelposition="top"  
  18.   
  19.     moveDownLabel="向下移动"  
  20.   
  21.     list="#{'Spring2.0宝典':'2006年10月' , '轻量级J2EE企业应用实战':'2007月4月' , '基于J2EE的Ajax宝典':'2007年6月'}"  
  22.   
  23.     listKey="key"  
  24.   
  25.     emptyOption="true"  
  26.   
  27.     listValue="value"/>  
  28.   
  29.      
  30.   
  31. <s:bean name="com.zhaosoft.ui.formtag.BookService" id="bs"/>  
  32.   
  33. <!-- 使用集合里放多个JavaBean实例来可上下移动选项的生成下拉选择框 -->  
  34.   
  35. <s:updownselect name="c" label="请选择您喜欢的图书的作者" labelposition="top"  
  36.   
  37.     selectAllLabel="全部选择" multiple="true"  
  38.   
  39.     list="#bs.books"  
  40.   
  41.     listKey="author"  
  42.   
  43.     listValue="name"/>  
  44.   
  45. </s:form>  

 

[java] view plain copy
  1. package com.zhaosoft.ui.formtag;  
  2.   
  3. public class BookService  
  4. {  
  5.   
  6.     public Book[] getBooks()  
  7.   
  8.     {  
  9.   
  10.        return new Book[]  
  11.   
  12.        {  
  13.   
  14.            new Book("Spring2.0宝典","zhaosoft"),  
  15.   
  16.            new Book("轻量级J2EE企业应用实战","zhaosoft"),  
  17.   
  18.            new Book("基于J2EE的Ajax宝典","zhaosoft")  
  19.   
  20.        };  
  21.   
  22.     }  
  23.   
  24. }  

 

 

 

 

optiontransferselect标签

optiontransferselect标签创建一个选项转移列表组建,它由两个<select>标签以及它们之间的用于将选项在两个<select>之间相互移动的按钮组成。表单提交时,将提交两个列表框中选中的选项。

 

名称

必需

默认

类型

描述

list

 

 

 

Cellection Map Enumeration Iterator array

 

要迭代的集合,使用集合中的元素来设置各个选项,如果list的属性为Map则Map的key成为选项的value,Map的value会成为选项的内容,该选项只对第一个列表框起作用

listKey

 

 

 

String

 

指定集合对象中的哪个属性作为选项的value,该选项只对第一个列表框起作用

listValue

 

 

 

String

 

指定集合对象中的哪个属性作为选项的内容,该选项只对第一个列表框起作用

headerKey

 

 

 

String

 

设置当用户选择了header选项时,提交的的value,如果使用该属性,不能为该属性设置空值

headerValue

String

显示在页面中header选项内容

multiple

false

Boolean

是否多选

size

 

 

 

Integer

 

显示的选项个数,该选项只对第一个列表框起作用

doubleId

String

指定第二个列表框的ID

doubleList

 

 

 

Cellection Map Enumeration Iterator array

要迭代的集合,使用集合中的元素来设置各个选项,如果doubleList的属性为Map则Map的key成为选项的value,Map的value会成为选项的内容,该选项只对第二个列表框起作用

doubleListKey

 

 

 

String

 

指定集合对象中的哪个属性作为选项的value,该选项只对第二个列表框起作用

doubleListValue

 

 

 

String

 

指定集合对象中的哪个属性作为选项的内容,该选项只对第二个列表框起作用

doubleHeaderKey

 

 

 

String

 

设置当用户选择了header选项时,提交的的value,如果使用该属性,不能为该属性设置空值

doubleHeaderVale

String

显示在页面中header选项内容

doubleEmptyOption

 

 

 

String

 

是否在第二列表框的header后面添加一个空选项

doubleMultiple

true

Boolean

是否多选

doubleSize

Integer

选项个数

doubleName

String

指定第二个列表框的name映射

doubleValue

Object

第二个列表框的初始选种项

leftTitle

String

左边列表框的标题

rightTitle

<-

String

右边列表框的标题

addToLeftLable

 

String

 

addToRightLable

 

 

 

 

addAllToLeftLable

 

 

 

 

addAllToRightLable

 

 

 

 

leftUpLabel

 

 

 

 

leftDownLabel

 

 

 

 

rightUpLabel

 

 

 

 

rightDownLabel

 

 

 

 

allowAddToLeft

 

 

 

 

allowAddToright

 

 

 

 

allowAddAllToLeft

 

 

 

 

allowAddAllToRight

 

 

 

 

allowSelectAll

Boolean

设置是否使用全部选择按钮

allowUpdownOnLeft

 

 

 

 

allowUpDownOnRight

 

 

 

 

 

例子:

[xml] view plain copy
  1. <s:head/>  
  2.   
  3. <s:form>  
  4.   
  5.     <s:optiontransferselect  
  6.   
  7.     label="最喜爱的图书"  
  8.   
  9.         name="javaBook"  
  10.   
  11.         list="{'《Java Web开发详解》', '《Struts 2深入详解》', '《Java快速入门》'}"  
  12.   
  13.         doubleName="cBook"  
  14.   
  15.         doubleList="{'《VC++深入详解》', '《C++ Primer》', '《C++程序设计语言》'}"/>  
  16.   
  17. </s:form>  
  18.   
  19. ---------------------------  
  20.   
  21. <s:form>  
  22.   
  23.     <s:optiontransferselect  
  24.   
  25.     label="最喜爱的图书"  
  26.   
  27.         name="book1"  
  28.   
  29.         leftTitle="Java图书"  
  30.   
  31.         rightTitle="C/C++图书"  
  32.   
  33.         list="{'《Java Web开发详解》', '《Struts 2深入详解》', '《Java快速入门》'}"  
  34.   
  35.         headerKey="-1"  
  36.   
  37.         headerValue="--- 请选择 ---"  
  38.   
  39.         emptyOption="true"  
  40.   
  41.         doubleName="book2"  
  42.   
  43.         doubleList="{'《VC++深入详解》', '《C++ Primer》', '《C++程序设计语言》'}"  
  44.   
  45.         doubleHeaderKey="-1"  
  46.   
  47.         doubleHeaderValue="--- 请选择 ---"  
  48.   
  49.         doubleEmptyOption="true"  
  50.   
  51.         addToLeftLabel="向左移动"  
  52.   
  53.         addToRightLabel="向右移动"  
  54.   
  55.         addAllToLeftLabel="全部左移"  
  56.   
  57.         addAllToRightLabel="全部右移"  
  58.   
  59.         selectAllLabel="全部选择"  
  60.   
  61.         leftUpLabel="向上移动"  
  62.   
  63.         leftDownLabel="向下移动"  
  64.   
  65.         rightUpLabel="向上移动"  
  66.   
  67.         rightDownLabel="向下移动"/>  
  68.   
  69. </s:form>