一、
写
jsp
页面的时候,在
struts2
中,用的是
s
标记,先引入标记:
<%@ taglib prefix="s" uri="/struts-tags"%>
二、
struts2
的标签和
1
是完全不同的。
struts2
的标签分为两大类:非
UI
标志和
UI
标志
struts1
将标志库按功能分成
HTML
、
Tiles
、
Logic
和
Bean
等几部分
下面就介绍
strut2
的具体标签:
1
、
UI
UI
标志又可以分为表单
UI
和非表单
UI
两部分。表单
UI
部分基本与
Struts 1.x
相同,都是对
HTML
表单元素的包装。不过,
Struts 2.0
加了几个我们经常在项目中用到的控件如:
datepicker
、
doubleselect
、
timepicker
、
optiontransferselect
等。因为这些标志很多都经常用到,而且参数也很多,要在一篇文章详细说明并非易事。
下面主要是
ui
标签的一些用法
form:
<s:form action="exampleSubmit" method="post" enctype="multipart/form-data">
<s:submit />
<s:reset />
</s:form>
可以上传文件的
form
。
textfield
:
<s:textfield
label="
姓名:
"
name="name"
tooltip="Enter your Name here" />
datepicker
:
<s:datepicker
tooltip="Select Your Birthday"
label="
生日
"
name="birthday" />
textarea
:
<s:textarea
tooltip="Enter your remart"
label="
备注
"
name="remart"
cols="20"
rows="3"/>
select:
<s:select
tooltip="Choose user_type"
label=""
list="#{'free':'
免费
','vip':'
收费
'}" value="#{'free':'
免费
'}"
name="bean.user_type"
emptyOption="true"
headerKey="None"
headerValue="None"/>
<s:select
tooltip="Choose user_type"
label=""
list="#{'free':'
免费
','vip':'
收费
'}" value="#{'free':'
免费
'}"
name="bean.user_type"
emptyOption="true"
headerKey="None"
headerValue="None"/>
<s:select
list="venderList"
listKey="id"
listValue="name"
value="%{profile.companyName}"
name="companyName" cssClass="sel_style_w_180"/>
挺好用的
checkboxlist
:
<s:checkboxlist
tooltip="Choose your Friends"
label="
朋友
"
list="{'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}"
name="friends"/>
checkbox
:
<s:checkbox
tooltip="Confirmed that your are Over 18"
label="
年龄
"
name="legalAge"
value="18"/>
file:
<s:file
tooltip="Upload Your Picture"
label="Picture"
name="picture" />
a:
<s:a href="getP.jsp">
超链接提交
</s:a>
date :
<s:date name="ad_end_time" format="yyyy-MM-dd"/>
radio :(
默认选择男
)
<s:set name="Global" value="%{getText('Erp.Common.UserManagement.Label.Member.Regular')}"/>
<s:radio name="user.sex" list="#{#Global:'
男
',1:'
女
'}" listKey="key" listValue="value" value="'0'"></s:radio>
2
、非
UI
if
、
elseif
和
else
描述:
执行基本的条件流转。
参数:
名称必需默认类型描述备注
test
是
Boolean
决定标志里内容是否显示的表达式
else
标志没有这个参数
id
否
Object/String
用来标识元素的
id
。在
UI
和表单中为
HTML
的
id
属性
例子:
<%@ page c %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Condition Flow</title>
</head>
<body>
<h3>Condition Flow</h3>
<!--
这里有点小技巧:
本来可以用
#parameters.name[0]
来获得,请求中
name
的值。但是,在我实现
include
例子时,
无论我用
param
标志给
name
赋任何值,
#parameters
里面不会含有任何值,所以
#parameters.name
也为空值。
其原因为:
当使用
include
标志时,被包含的页面(
included
)里
#parameters
拿到的是包含页面里的请求参数。
因此,这里必须手工调用
request.getParameter("name")
。
-->
<s:iterator value="linkList" status="bean">
<tr>
<td class="data_tab_tdcl">
<s:property value="#bean.Index+1" /> </td>
<td class="data_tab_tdcl"><s:property value="link_title" /></td>
<td class="data_tab_tdcl"><s:property value="link_url" /></td>
<td class="data_tab_tdcl">
<s:if test="link_type == 1">
文字
</s:if>
<s:elseif test="link_type == 2">
图片
</s:elseif>
<s:else>
-----
</s:else>
</td>
</body>
</html>
例
1 condition.jsp
iterator
描述:
用于遍历集合(
java.util.Collection
)或枚举值(
java.util.Iterator
)。
参数:
名称必需默认类型描述
status
否
String
如果设置此参数,一个
IteratorStatus
的实例将会压入每个遍历的堆栈
value
否
Object/String
要遍历的可枚举的(
iteratable
)数据源,或者将放入新列表(
List
)的对象
id
否
Object/String
用来标识元素的
id
。在
UI
和表单中为
HTML
的
id
属性
例子:
<%@ page c %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN">
<%
List list = new ArrayList();
list.add("Max");
list.add("Scott");
list.add("Jeffry");
list.add("Joe");
list.add("Kelvin");
request.setAttribute("names", list);
%>
<html>
<head>
<title>Iterator</title>
</head>
<body>
<h3>Names: </h3>
<!--
1
、此处的空
property
元素用于获得当前
iterator
的值
2
、
status
被设成
stuts
,在
iterator
的里面就可以通过
#stuts
取得
IteratorStatus
的对象。
IteratorStatus
类包含当前序号信息,如是否第一个或最后一个,是否为奇数序号。这些信息在我们做格式化的时候,显得非常有用。
-->
<ol>
<s:iterator value="#request.names" status="stuts">
<s:if test="#stuts.odd == true">
<li>White <s:property /></li>
</s:if>
<s:else>
<li style="background-color:gray"><s:property /></li>
</s:else>
</s:iterator>
</ol>
</body>
</html>
1
.
Struts2
页面开发中常用标签使用说明
1.1
.往
action
里传值的使用方式:
<input name="userName" type="text" class="input6" size="15">
a. userName
属性需要在访问的
action
中提供相应的属性,并有
SET/GET
方法。
b.
可以不在访问的
action
中提供相应的属性,用
request.getParameter(
“
userName
”
);1.2
.显示标签
property
用于输出指定值:
<s:property value=" userName "/>
当
action
返回到指定页面是,可以通过该标签显示
action
中的属性信息。(注
userName
必须在
action
中存在,并有
GET
方法)。
1.3
.往对象中传值
<s:textfield>
用于从页面往
action
中的对象内传值:
<s:text[color=blue][/color]field name="user. userName " id="username"/>
该标签可以在页面中向
action
中的实体对象内直接传值。(注:在
action
中要存在
user
对象,并有
SET/GET
方法。)
1.4
.判断
<s:if> </s:if>
用于在页面中判断指定数据
<s:if test="userName == admin">…. </s:if>
<s:else>…. </s:else>
该标签用于对指定的数据进行判断,但指定的数据必须在
action
中存在。
1.5
.迭代
<s:iterator>
用于将
List
、
Map
、
ArrayList
等集合进行循环遍历
<s:iterator value="userList" id="user" status="u">
<s:property value="userName"/></a>
</s:iterator>
该标签用于将
userList
集合中的元素进行循环,用过
property
进行显示集合中的指定元素值。
1.6
.
URL
地址标签,
<s:url>
用于生成一个
URL
地址,可以通过
URL
标签指定的
<s:param>
子元素向
URL
地址发送请求参数
<s:url action=" ">
<s:param name=" " value=""></s:param>
</s:url>
其中
action
为请求地址,
param
子元素为地址后面所带的参数。
1.7
.超链接
<a href >
一般和
<s:url>
标签一起使用,用于带多个参数。
<a href="
<s:url action=" ">
<s:param name=" " value=""></s:param>
<s:param name=" " value=""></s:param>
<s:param name=" " value=""></s:param>
</s:url>">
超链接
</a>
1.8
.
set
标签,用于将某个值放入指定的范围内。例如
application,session
等。
<s:set name="user" value="userName" scope=”request”/>
将
user
值放入
request
范围内。
2
.
Struts2
页面开发中常用标签使用规范:
1.1
.通过
<input name="userName" type="text" class=" " size="15">
往
action
中传值,
action
中要有相应的属性,并提供
SET/GET
方法。
(在数量少时可以使用
request.getParameter(
“
userName
”
);
)
1.2
.在页面显示
action
传来的数据,使用
property
标签。需要显示的数据从
action
中获得。
1.3
.往
action
中的实体对象内传值,使用
textfield
标签。
1.4
.在页面中判断指定值使用
<s:if>
标签。判断数据从
action
中获得。
1.5
.在页面中需要循环列表显示的数据使用
<s:iterator>
标签,列表数据从
action
中获得。
1.6
.
URL
地址和超链接可以使用
<a href>
和
<s:url>
,在传多值时建议
<a href>
和
<s:url>
一起使用