您的位置:首页 > 编程语言 > Java开发

Struts 2.0 常用标签

2009-04-30 17:08 423 查看
(1)
在介绍常用标志前,我想先从总体上,对Struts 1.x与Struts 2.0的标志库(Tag Library)作比较:
1)
分类:
Struts 1.x:
将标志库按功能分成HTML、Tiles、Logic和Bean等几部分
Struts 2.0:
严格上来说,没有分类,所有标志都在URI为“/struts-tags”命名空间下,不过,我们可以从功能上将其分为两大类:非UI标志和UI标志
2)
表达式语言(expression languages)
Struts 1.x: 不支持嵌入语言(EL)
Struts 2.0: OGNL、JSTL、Groovy和Velcity
(2)
要在JSP中使用Struts 2.0标志,先要指明标志的引入。通过在JSP的代码的顶部加入以下代码可以做到这点。
<%@taglib prefix="s" uri="/struts-tags" %>
(3)
非UI标志:
1)
if、elseif和else,如:
<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />
<s:if test="#name == 'Max'">
Max's file here
</s:if>
<s:elseif test="#name == 'Scott'">
Scott's file here
</s:elseif>
<s:else>
Other's file here
</s:else>
set标签,赋予变量一个特定范围内的值。变量作用域,可以为application, session, request, page, 或action.默认存储在page中.
参数:
name:变量名字
scope:变量作用域,可以为application, session, request, page, 或action.
value:变量值.

2)
iterator
用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator).
<%
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>
3)
i18n
描述:
加载资源包到值堆栈。
<h3>
<s:i18n name="ApplicationMessages">
<s:text name="HelloWorld" />
</s:i18n>
</h3>
text标签
描述:
支持国际化信息的标签。国际化信息必须放在一个和当前 action同名的resource bundle中.
name,指明资源属性的名字
4)
include
描述:
包含一个servlet的输出(servlet或jsp的页面)。
<s:include value="/condition.jsp">
<s:param name="name">Max</s:param>
</s:include>
<h3>i18n</h3>
<s:include value="/i18n.jsp" />
5)
url
描述:
该标签用于创建url,可以通过"param"标签提供request参数。
<a href='<s:url value="/i18n.jsp" />'>i18n</a><br />
<s:url id="url" value="/condition.jsp">
<s:param name="name">Max</s:param>
</s:url>
<s:a href="%{url}">if\elseif\else</s:a>
6)
property
描述:
得到'value'的属性,如果value没提供,默认为堆栈顶端的元素。
(4)
UI标志
UI 标志又可以分为表单UI和非表单UI两部分。表单UI部分基本与Struts 1.x相同,都是对HTML表单元素的包装。不过,Struts 2.0加了几个我们经常在项目中用到的控件如:datepicker、doubleselect、timepicker、 optiontransferselect等。因为这些标志很多都经常用到,而且参数也很多.
如下:
<body>
<s:actionerror/>
<s:actionmessage/>
<s:fielderror />
<s:form action="exampleSubmit" method="post" enctype="multipart/form-data" tooltipConfig="#{'jsTooltipEnabled':'true'}">
<s:textfield
label="Name"
name="name"
tooltip="Enter your Name here" />
<s:datepicker
tooltip="Select Your Birthday"
label="Birthday"
name="birthday" />
<s:textarea
tooltip="Enter your Biography"
label="Biograph"
name="bio"
cols="20"
rows="3"/>
<s:select
tooltip="Choose Your Favourite Color"
label="Favorite Color"
list="{'Red', 'Blue', 'Green'}"
name="favoriteColor"
emptyOption="true"
headerKey="None"
headerValue="None"/>
<s:select
tooltip="Choose Your Favourite Language"
label="Favourite Language"
list="favouriteLanguages"
name="favouriteLanguage"
listKey="key"
listValue="description"
emptyOption="true"
headerKey="None"
headerValue="None"/>
<s:checkboxlist
tooltip="Choose your Friends"
label="Friends"
list="{'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}"
name="friends"/>
<s:checkbox
tooltip="Confirmed that your are Over 18"
label="Age 18+"
name="legalAge"/>
<s:doubleselect
tooltip="Choose Your State"
label="State"
name="region" list="{'North', 'South'}"
value="'South'"
doubleValue="'Florida'"
doubleList="top == 'North' ? {'Oregon', 'Washington'} : {'Texas', 'Florida'}"
doubleName="state"
headerKey="-1"
headerValue="---------- Please Select ----------"
emptyOption="true" />
<s:doubleselect
tooltip="Choose your Vehical"
label="Favourite Vehical"
name="favouriteVehicalType"
list="vehicalTypeList"
listKey="key"
listValue="description"
value="'MotorcycleKey'"
doubleValue="'YamahaKey'"
doubleList="vehicalSpecificList"
doubleListKey="key"
doubleListValue="description"
doubleName="favouriteVehicalSpecific" headerKey="-1"
headerValue="---------- Please Select ----------"
emptyOption="true" />
<s:file
tooltip="Upload Your Picture"
label="Picture"
name="picture" />

<s:optiontransferselect
tooltip="Select Your Favourite Cartoon Characters"
label="Favourite Cartoons Characters"
name="leftSideCartoonCharacters"
leftTitle="Left Title"
rightTitle="Right Title"
list="{'Popeye', 'He-Man', 'Spiderman'}"
multiple="true"
headerKey="headerKey"
headerValue="--- Please Select ---"
emptyOption="true"
doubleList="{'Superman', 'Mickey Mouse', 'Donald Duck'}"
doubleName="rightSideCartoonCharacters"
doubleHeaderKey="doubleHeaderKey"
doubleHeaderValue="--- Please Select ---"
doubleEmptyOption="true"
doubleMultiple="true" />

<s:textarea
label="Your Thougths"
name="thoughts"
tooltip="Enter your thoughts here" />

<s:submit />
<s:reset />
</s:form>
</body>

struts2.0常用标签说明:
(1)
s:url的用法:
URL地址标签,<s:url>用于生成一个URL地址,可以通过URL标签指定的<s:param>子元素向URL地址
发送请求参数.
1.
普通的链接,用value属性:
<a href="<s:url value="Login_input.jsp"/>">Sign On</a>
2.
链接到action:
<a href="<s:url action="Register"/>">Register</a>
3.
分开写,有id来指定名称:
<s:url action="input" id="regurl" namespace="/reg"></s:url>
<a href="${regurl}"><s:text name="reg.title"/></a>
4.
带参数,用<s:param name>:
<s:url id="url" action="HelloWorld">
<s:param name="request_locale">es</s:param>
</s:url>
(2)
2.1
往对象中传值<s:textfield> 用于从页面往action中的对象内传值:
<s:text name="user. userName " id="username"/>
该标签可以在页面中向action中的实体对象内直接传值。(注:在action中要存在user对象,并有
SET/GET方法。)

<input name="userName" type="text" class="input6" size="15">
2.2
对象(action)中获取页面传来的值(如上实例):
1. userName属性需要在访问的action中提供相应的属性,并有SET/GET方法。

2. 可以不在访问的action中提供相应的属性,用request.getParameter(“userName”);
(3)
在页面显示action的返回值: 标签 property 用于输出指定值:
<s:property value=" userName "/> 当action返回到指定页面是,可以通过该标签显示action中的
属性信息。(注 userName必须在action中存在,并有GET方法)。
(4)
判断<s:if> </s:if> 用于在页面中判断指定数据
<s:if test="userName == admin">…. </s:if>
<s:else>…. </s:else>
该标签用于对指定的数据进行判断,但指定的数据必须在action中存在。
(5)
迭代<s:iterator>用于将List、Map、ArrayList等集合进行循环遍历
<s:iterator value="userList" id="user" status="u">
<s:property value="userName"/></a>
</s:iterator>
该标签用于将userList集合中的元素进行循环,用过property进行显示集合中的指定元素值。
(6)
set标签,用于将某个值放入指定的范围内。例如application,session等。
<s:set name="user" value="userName" scope=”request”/>
将user值放入request范围内。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: