版权声明:本文转自http://blog.csdn.net/zxl315/archive/2008/09/05/2886456.aspx
jsp
中使用
Struts2
的标志,先要指明标志的引入。通过
jsp
的代码的顶部加入以下的代码:
<%@
taglib
prefix
=
"s"
uri
=
"/struts-tags"
%>
If elseif
else
描述:
执行基本的条件流转。
参数:
名称
|
必需
|
默认
|
类型
|
描述
|
备注
|
test |
是
|
|
boolean |
决定标志里的内容是否显示的表达式
|
else
|
id |
否
|
|
Object/String |
用来标识元素的
|
|
例子:
<
s:set
name
=
"age"
value
=
"61"
/>
<
s:if
test
=
"${age > 60}
">
老年人
</
s:if
>
<
s:elseif
test
=
"${age > 35}
">
中年人
</
s:elseif
>
<
s:elseif
test
=
"${age > 15}
"
id
=
"wawa"
>
青年人
</
s:elseif
>
<
s:else
>
少年
</
s:else
>
<
s:set
name
=
"name"
value
=
"<%=
"'"
+ request.getParameter(
"name"
)+
"'"
%>
"/>
<%
System.out.println(request.getParameter(
"name"
));
%>
<
s:if
test
=
"#name=='zhaosoft'"
>
zhaosoft here
</
s:if
>
<
s:elseif
test
=
"#name=='zxl'"
>
zxl here
</
s:elseif
>
<
s:else
>
other is here
</
s:else
>
Iterator
(迭代)
描述:用于遍历集合(
java.util.Collection
)或枚举值
(java.util.iterator)
参数
名称
|
必需
|
默认
|
类型
|
描述
|
status |
否
|
|
String |
如果设置此参数,一个
|
value |
否
|
|
Object/String |
要遍历的可枚举的
|
id |
否
|
|
Object/String |
用来标识元素的
|
I18n
(国际化操作)
描述:
加载资源包到值堆栈。它可以允许
text
标志访问任何资源包的信息。而不只当前的
action
相关联的资源包。
名称
|
必需
|
默认
|
类型
|
描述
|
name |
是
|
|
Object/String |
资源包的类路径 |
id |
否
|
|
Object/String |
用来标识元素的
|
Include
描述:包含一个
servlet
的输出
(servlet
或
jsp
的页面
)
名称
|
必需
|
默认
|
类型
|
描述
|
value |
时
|
|
String |
要包含的 |
id |
否
|
|
Object/String |
用来标识元素的
|
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 |
用来标识元素的
|
set
描述:
set
标签赋予变量一个特定范围内的值。当希望给一个变量赋一个复杂的表达式,每次访问该变量而不是复杂的表达式时用到。其在两种情况下非常有用:复杂的表达式很耗时(性能提升)或者很难理解(代码的可读性提高)
参数:
名称
|
必需
|
默认
|
类型
|
描述
|
name |
是
|
|
String |
变量名字
|
scope |
否
|
|
String |
变量作用域,可以为 |
value |
否
|
|
Object/String |
将会赋给变量的值
|
id |
否
|
|
Object/String |
用来标识元素的
|
Text
描述:支持国际化信息的标签。国际化信息必须放在一个和当前
action
同名的
resource
bundle
中,如果没有找到相应
message,tag
body
将被当作默认的
message
,如果没有
tag body
,
message
的
name
会被作为默认
message.
名称
|
必需
|
默认
|
类型
|
描述
|
name |
是
|
|
String |
资源属性的名字
|
id |
否
|
|
Object/String |
用来标识元素的
|
url
描述:该标签用于创建
url
,可以通过
”param”
标签提供
request
参数。
当
includeParams
的值是
all
或
get
,
param
标签中定义的参数将有优先权,也就是说其会覆盖其他同名参数的值。
UI
标志
单行文本框
Textfield
标签输出一个
HTML
单行文本输入控件,等价于
HTML
代码
<input type=”text”>
名称
|
必需
|
默认
|
类型
|
描述
|
maxlength |
否
|
无
|
Integer |
文本输入控件可以输入字符的最大长度
|
readonly |
否
|
false |
Boolean |
当该属性为
|
size |
否
|
无
|
Integer |
指定可视尺寸
|
id |
否
|
|
Object/String |
用来标识元素的
|
例子:
<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 |
当该属性为
|
wrap |
否
|
false |
Boolean |
指定多行文本输入控件是否应该换行
|
id |
否
|
|
Object/String |
用来标识元素的
|
例子:
<
s:textarea
name
=
"personal"
cols
=
"10"
rows
=
"5"
label
=
"
个人简历
"
></
s:textarea
>
下拉列表
s:select
标签输出一个下拉列表框,相当于
HTML
代码中的
<select/>
名称
|
必需
|
默认
|
类型
|
描述
|
list |
是
|
无
|
Cellection |
要迭代的集合,使用集合中的元素来设置各个选项,如果
|
listKey |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的 |
listValue |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的内容
|
headerKey |
否
|
无
|
String |
设置当用户选择了
|
headerValue |
否
|
无
|
String |
显示在页面中
|
emptyOption |
否
|
false |
Boolean |
是否在
|
multiple |
否
|
false |
Boolean |
是否多选
|
size |
否
|
无
|
Integer |
显示的选项个数
|
例子:
%@
page
contentType
=
"text/html;charset=GBK"
%>
<%@
taglib
prefix
=
"s"
uri
=
"/struts-tags"
%>
<
h3
>
使用
name
和
list
属性,
list
属性的值是一个列表
</
h3
>
<
s:form
>
<
s:select
label
=
"
最高学历
"
name
=
"education"
list
=
"{'
高中
','
大学
','
硕士
','
博士
'}"
/>
</
s:form
>
<
h3
>
使用
name
和
list
属性,
list
属性的值是一个
Map
</
h3
>
<
s:form
>
<
s:select
label
=
"
最高学历
"
name
=
"education"
list
=
"#{1:'
高中
',2:'
大学
',3:'
硕士
',4:'
博士
'}
"/>
</
s:form
>
<
h3
>
使用
headerKey
和
headerValue
属性设置
header
选项
</
h3
>
<
s:form
>
<
s:select
label
=
"
最高学历
"
name
=
"education"
list
=
"{'
高中
','
大学
','
硕士
','
博士
'}"
headerKey
=
"-1"
headerValue
=
"
请选择您的学历
"
/>
</
s:form
>
<
h3
>
使用
emptyOption
属性在
header
选项后添加一个空的选项
</
h3
>
<
s:form
>
<
s:select
label
=
"
最高学历
"
name
=
"education"
list
=
"{'
高中
','
大学
','
硕士
','
博士
'}"
headerKey
=
"-1"
headerValue
=
"
请选择您的学历
"
emptyOption
=
"true"
/>
</
s:form
>
<
h3
>
使用
multiple
属性设置多选
</
h3
>
<
s:form
>
<
s:select
label
=
"
最高学历
"
name
=
"education"
list
=
"{'
高中
','
大学
','
硕士
','
博士
'}"
headerKey
=
"-1"
headerValue
=
"
请选择您的学历
"
emptyOption
=
"true"
multiple
=
"true"
/>
</
s:form
>
<
h3
>
使用
size
属性设置下拉框可显示的选项个数
</
h3
>
<
s:form
>
<
s:select
label
=
"
最高学历
"
name
=
"education"
list
=
"{'
高中
','
大学
','
硕士
','
博士
'}"
headerKey
=
"-1"
headerValue
=
"
请选择您的学历
"
emptyOption
=
"true"
multiple
=
"true"
size
=
"8"
/>
</
s:form
>
<
h3
>
使用
listKey
和
listValue
属性,利用
Action
实例的属性(
property
)来设置选项的值和选项的内容
</
h3
>
<
s:form
>
<
s:select
label
=
"
最高学历
"
name
=
"education"
list
=
"educations"
listKey
=
"id"
listValue
=
"name"
/>
</
s:form
doubleselect
标签
doubleselect
标签输出关联的两个
HTML
列表框,产生联动效果。
名称
|
必需
|
默认
|
类型
|
描述
|
list |
是
|
无
|
Cellection |
要迭代的集合,使用集合中的元素来设置各个选项,如果
|
listKey |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的
|
listValue |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的内容,该选项只对第一个列表框起作用
|
headerKey |
否
|
无
|
String |
设置当用户选择了
|
headerValue |
否
|
无
|
String |
显示在页面中
|
emptyOption |
否
|
false |
Boolean |
|
multiple |
否
|
false |
Boolean |
是否多选
|
size |
否
|
无
|
Integer |
显示的选项个数,该选项只对第一个列表框起作用
|
doubleId |
否
|
无
|
String |
指定第二个列表框的 |
doubleList |
是
|
无
|
Cellection |
要迭代的集合
|
doubleListKey |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的
|
doubleListValue |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的内容,该选项只对第二个列表框起作用
|
doubleSize |
否
|
无
|
Integer |
选项个数
|
doubleName |
否
|
无
|
String |
指定第二个列表框的
|
doubleValue |
否
|
无
|
Object |
第二个列表框的初始选种项
|
实例:
<
s:form
name
=
"test"
>
<
s:doubleselect
label
=
"
请选择所在省市
"
name
=
"province"
list
=
"{'
四川省
','
山东省
'}"
doubleName
=
"city"
doubleList
=
"top == '
四川省
' ? {'
成都市
', '
绵阳市
'} : {'
济南市
', '
青岛市
'}"
/>
</
s:form
>
<
s:form
action
=
"doubleselectTag"
>
<
s:doubleselect
label
=
"
请选择所在省市
"
name
=
"province"
list
=
"provinces"
listKey
=
"id"
listValue
=
"name"
doubleList
=
"cities"
doubleListKey
=
"id"
doubleListValue
=
"name"
doubleName
=
"city"
headerKey
=
"-1"
headerValue
=
"----------
请选择
----------"
emptyOption
=
"true"
/>
</
s:form
>
复选框
名称
|
必需
|
默认
|
类型
|
描述
|
fieldValue |
是
|
true |
String |
指定在复选框选中时,实际提交的值
|
复选框组,对应
Action
中的集合
名称
|
必需
|
默认
|
类型
|
描述
|
list |
是
|
无
|
Cellection |
要迭代的集合,使用集合中的元素来设置各个选项,如果
|
listKey |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的 |
listValue |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的内容
|
例子:
checkboxlistTag.jsp
<%@
page
contentType
=
"text/html;charset=GBK"
%>
<%@
taglib
prefix
=
"s"
uri
=
"/struts-tags"
%>
<
s:form
>
<
s:checkboxlist
name
=
"interest"
list
=
"{'
足球
','
篮球
','
排球
','
游泳
'}"
label
=
"
兴趣爱好
"
/>
</
s:form
>
单击复选框
文件选择组建
file
标签输出一个
HTML
文件选择框。
名称
|
必需
|
默认
|
类型
|
描述
|
accept |
否
|
input |
String |
HTML accept
|
按钮
Submit
标签输出一个按钮,
submit
标签和
form
标签使用可以提供异步表单提交功能。
Submit
标签可以输出以下三种类型的提交按钮:
Input
:
等价于
HTML
代码
<input
type=”submit”>
Image
:
等价于
HTML
代码
<
input
type
=
"image"
>
Button
:
<
button
type
=
"submit"
></
button
>
名称
|
必需
|
默认
|
类型
|
描述
|
type |
否
|
input |
String |
要使用的提交按钮的类型,有效值: |
src |
否
|
无
|
String |
为
|
action |
否
|
无
|
String |
指定处理提交请求的 |
method |
否
|
无
|
String |
指定处理提交请求的
|
实例
实例
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()
方法的执行。
<
s:form
action
=
"user"
>
<
s:textfield
name
=
"user.username"
label
=
"
用户名
"
></
s:textfield
>
<
s:textfield
name
=
"user.password"
label
=
"
密码
"
></
s:textfield
>
<
s:submit
value
=
"
登陆
"
name
=
"method:login"
></
s:submit
>
<
s:submit
value
=
"
注册
"
name
=
"method:register"
></
s:submit
>
</
s:form
>
注意:
1
。
input
类型的按钮,不能用
label
设置按钮上的文本,只能用
value
2
、
action
前缀
使用
action
前缀,取代
form
标签指定的
action
,导向到另一个
action
进行处理。
<
s:form
action
=
"login"
>
<
s:textfield
name
=
"user.username"
label
=
"
用户名
"
></
s:textfield
>
<
s:textfield
name
=
"user.password"
label
=
"
密码
"
></
s:textfield
>
<
s:submit
value
=
"
登陆
"
></
s:submit
>
<
s:submit
value
=
"
注册
"
name
=
"action:register"
></
s:submit
>
</
s:form
>
2
、
redirect
前缀
使用
redirect
前缀请求重定向到其他的
url
,甚至可以是
web
英语程序外部的
url
。
<
s:form
action
=
"login"
>
<
s:textfield
name
=
"user.username"
label
=
"
用户名
"
></
s:textfield
>
<
s:textfield
name
=
"user.password"
label
=
"
密码
"
></
s:textfield
>
<
s:submit
value
=
"
登陆
"
></
s:submit
>
<
s:submit
value
=
"
搜索
"
name
=
"redirect:www.google.com"
></
s:submit
>
</
s:form
>
2
、
redirect-action
前缀
使用
redirect-action
前缀请求重定向到其他的
action.
<
s:form
action
=
"login"
>
<
s:textfield
name
=
"user.username"
label
=
"
用户名
"
></
s:textfield
>
<
s:textfield
name
=
"user.password"
label
=
"
密码
"
></
s:textfield
>
<
s:submit
value
=
"
登陆
"
></
s:submit
>
<
s:submit
value
=
"
搜索
"
name
=
"redirect-action:register"
></
s:submit
>
</
s:form
>
reset
标签
reset
标签输出一个重置按钮
名称
|
必需
|
默认
|
类型
|
描述
|
type |
否
|
input |
String |
要使用的重置按钮的内容, |
<
s:reset
value
=
"
重置
"
></
s:reset
>
<
s:reset
type
=
"button"
label
=
"
重置
"
></
s:reset
>
updownselect
标签
updownselect
标签创建一个带有上下移动的按钮的列表框,可以通过上下移动按钮来调整列表框的选项的位置。
名称
|
必需
|
默认
|
类型
|
描述
|
list |
是
|
无
|
Cellection |
要迭代的集合,使用集合中的元素来设置各个选项,如果
|
listKey |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的 |
listValue |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的内容
|
headerKey |
否
|
无
|
String |
设置当用户选择了
|
headerValue |
否
|
无
|
String |
显示在页面中
|
emptyOption |
否
|
false |
Boolean |
是否在
|
multiple |
否
|
false |
Boolean |
是否多选
|
size |
否
|
无
|
Integer |
显示的选项个数
|
moveUplabel |
否
|
|
String |
设置向上移动按钮上的文本
|
moveDownLabel |
否
|
|
String |
设置向下移动按钮上的文本
|
selectAllLabel |
否
|
|
String |
设置向全部选择按钮上的文本
|
allowMoveUp |
否
|
无
|
Boolean |
设置是否使用向上移动按钮
|
allowMoveDown |
否
|
无
|
Boolean |
设置是否使用向下移动按钮
|
allowSelectAll |
否
|
无
|
Boolean |
设置是否使用全部选择按钮
|
实例:
<
s:form
>
<!--
使用简单集合来生成可上下移动选项的下拉选择框
-->
<
s:updownselect
name
=
"a"
label
=
"
请选择您喜欢的图书
"
labelposition
=
"top"
moveUpLabel
=
"
向上移动
"
list
=
"{'Spring2.0
宝典
' , '
轻量级
J2EE
企业应用实战
' , 'JavaScript: The Definitive Guide'}"
/>
<!--
使用简单
Map
对象来生成可上下移动选项的下拉选择框
且使用
emptyOption="true"
增加一个空选项
-->
<
s:updownselect
name
=
"b"
label
=
"
请选择您想选择出版日期
"
labelposition
=
"top"
moveDownLabel
=
"
向下移动
"
list
=
"
#{'Spring2.0
宝典
':'2006
年
10
月
' , '
轻量级
J2EE
企业应用实战
':'2007
月
4
月
' , '
基于
J2EE
的
Ajax
宝典
':'2007
年
6
月
'}
"
listKey
=
"key"
emptyOption
=
"true"
listValue
=
"value"
/>
<
s:bean
name
=
"com.zhaosoft.ui.formtag.BookService"
id
=
"bs"
/>
<!--
使用集合里放多个
JavaBean
实例来可上下移动选项的生成下拉选择框
-->
<
s:updownselect
name
=
"c"
label
=
"
请选择您喜欢的图书的作者
"
labelposition
=
"top"
selectAllLabel
=
"
全部选择
"
multiple
=
"true"
list
=
"#bs.books"
listKey
=
"author"
listValue
=
"name"
/>
</
s:form
>
package
com.zhaosoft.ui.formtag;
public
class
BookService
{
public
Book[] getBooks()
{
return
new
Book[]
{
new
Book(
"Spring2.0
宝典
"
,
"zhaosoft"
),
new
Book(
"
轻量级
J2EE
企业应用实战
"
,
"zhaosoft"
),
new
Book(
"
基于
J2EE
的
Ajax
宝典
"
,
"zhaosoft"
)
};
}
}
optiontransferselect
标签
optiontransferselect
标签创建一个选项转移列表组建,它由两个
<select>
标签以及它们之间的用于将选项在两个
<select>
之间相互移动的按钮组成。表单提交时,将提交两个列表框中选中的选项。
名称
|
必需
|
默认
|
类型
|
描述
|
list |
是
|
无
|
Cellection |
要迭代的集合,使用集合中的元素来设置各个选项,如果
|
listKey |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的
|
listValue |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的内容,该选项只对第一个列表框起作用
|
headerKey |
否
|
无
|
String |
设置当用户选择了
|
headerValue |
否
|
无
|
String |
显示在页面中
|
multiple |
否
|
false |
Boolean |
是否多选
|
size |
否
|
无
|
Integer |
显示的选项个数,该选项只对第一个列表框起作用
|
doubleId |
否
|
无
|
String |
指定第二个列表框的 |
doubleList |
是
|
无
|
Cellection |
要迭代的集合,使用集合中的元素来设置各个选项,如果
|
doubleListKey |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的
|
doubleListValue |
否
|
无
|
String |
指定集合对象中的哪个属性作为选项的内容,该选项只对第二个列表框起作用
|
doubleHeaderKey |
否
|
无
|
String |
设置当用户选择了
|
doubleHeaderVale |
否
|
无
|
String |
显示在页面中
|
doubleEmptyOption |
否
|
无
|
String |
是否在第二列表框的
|
doubleMultiple |
否
|
true |
Boolean |
是否多选
|
doubleSize |
否
|
无
|
Integer |
选项个数
|
doubleName |
否
|
无
|
String |
指定第二个列表框的
|
doubleValue |
否
|
无
|
Object |
第二个列表框的初始选种项
|
leftTitle |
否
|
无
|
String |
左边列表框的标题
|
rightTitle |
否
|
<- |
String |
右边列表框的标题
|
addToLeftLable |
否
|
|
String |
|
addToRightLable |
|
|
|
|
addAllToLeftLable |
|
|
|
|
addAllToRightLable |
|
|
|
|
leftUpLabel |
|
|
|
|
leftDownLabel |
|
|
|
|
rightUpLabel |
|
|
|
|
rightDownLabel |
|
|
|
|
allowAddToLeft |
|
|
|
|
allowAddToright |
|
|
|
|
allowAddAllToLeft |
|
|
|
|
allowAddAllToRight |
|
|
|
|
allowSelectAll |
否
|
无
|
Boolean |
设置是否使用全部选择按钮
|
allowUpdownOnLeft |
|
|
|
|
allowUpDownOnRight |
|
|
|
|
例子:
<
s:head
/>
<
s:form
>
<
s:optiontransferselect
label
=
"
最喜爱的图书
"
name
=
"javaBook"
list
=
"{'
《
Java Web
开发详解》
', '
《
Struts 2
深入详解》
', '
《
Java
快速入门》
'}"
doubleName
=
"cBook"
doubleList
=
"{'
《
VC++
深入详解》
', '
《
C++ Primer
》
', '
《
C++
程序设计语言》
'}"
/>
</
s:form
>
---------------------------
<
s:form
>
<
s:optiontransferselect
label
=
"
最喜爱的图书
"
name
=
"book1"
leftTitle
=
"Java
图书
"
rightTitle
=
"C/C++
图书
"
list
=
"{'
《
Java Web
开发详解》
', '
《
Struts 2
深入详解》
', '
《
Java
快速入门》
'}"
headerKey
=
"-1"
headerValue
=
"---
请选择
---"
emptyOption
=
"true"
doubleName
=
"book2"
doubleList
=
"{'
《
VC++
深入详解》
', '
《
C++ Primer
》
', '
《
C++
程序设计语言》
'}"
doubleHeaderKey
=
"-1"
doubleHeaderValue
=
"---
请选择
---"
doubleEmptyOption
=
"true"
addToLeftLabel
=
"
向左移动
"
addToRightLabel
=
"
向右移动
"
addAllToLeftLabel
=
"
全部左移
"
addAllToRightLabel
=
"
全部右移
"
selectAllLabel
=
"
全部选择
"
leftUpLabel
=
"
向上移动
"
leftDownLabel
=
"
向下移动
"
rightUpLabel
=
"
向上移动
"
rightDownLabel
=
"
向下移动
"
/>
</
s:form
>