taglibstruts2标签.docx
《taglibstruts2标签.docx》由会员分享,可在线阅读,更多相关《taglibstruts2标签.docx(36页珍藏版)》请在冰豆网上搜索。
taglibstruts2标签
Taglib(Struts2标签库)
Struts2Taglib抽象了不同表示技术,现在Struts2主要支持三种表示技术:
JSP,FreeMarker和Velocity。
但部分的Tag在三种表示技术下都可以使用,但是也有部分只能在某一种情况下使用。
Tab可以分为两类:
通用标签和UI标签。
4.1节通用标签
通用标签用来在页面表示的时候控制代码执行的过程,这些标签也允许从Action或者值堆栈中取得数据。
例如地域,JavaBeans,URLs,和action。
控制标签控制程序执行,例如:
if,else,iterator
数据标签管理数据的取得和创建,例如:
bean,push,i18n
控制标签
if标签
描述
If标签用来控制基本的条件处理流程,通常和else标签或者elseif标签连用。
参数
名字
是否必须
默认值
可否使用表达式
类型
描述
id
否
是
String
用来表示该元素,对于UI和Form标签来说直接转变为HTMLid属性
test
是
是
Boolean
用来决定是否显示标签内部内容的表达式
例子
iftest="%{false}">
WillNotBeExecuted
if>
elseiftest="%{true}">
WillBeExecuted
elseif>
else>
WillNotBeExecuted
else>
elseIf标签
参考if标签
else标签
参考if标签
append标签
描述
用来做iterator标签的辅助,将不同iterator中的内容合在一个iterator中。
参数
名字
是否必须
默认值
可否使用表达式
类型
描述
id
否
是
String
用来保存结果iterator的对象在valuecontext中的名字。
例子
Action类
publicclassAppendIteratorTagActionextendsActionSupport{
privateListmyList1;
privateListmyList2;
privateListmyList3;
publicStringexecute()throwsException{
myList1=newArrayList();
myList1.add("1");
myList1.add("2");
myList1.add("3");
myList2=newArrayList();
myList2.add("a");
myList2.add("b");
myList2.add("c");
myList3=newArrayList();
myList3.add("A");
myList3.add("B");
myList3.add("C");
return"done";
}
publicListgetMyList1(){returnmyList1;}
publicListgetMyList2(){returnmyList2;}
publicListgetMyList3(){returnmyList3;}
标签使用
appendid="myAppendIterator">
paramvalue="%{myList1}"/>
paramvalue="%{myList2}"/>
paramvalue="%{myList3}"/>
append>
iteratorvalue="%{#myAppendIterator}">
property/>
iterator>
generator标签(JSPTag)
描述
从val属性生成一个iterator。
参数
例子
例1:
生成一个简单的iterator,并且使用iterator标签打印出内容。
generatorval="%{'aaa,bbb,ccc,ddd,eee'}">
iterator>
property/>
iterator>
generator>
例2:
生成一个iterator,使用count属性。
因为count属性值为3,所以只有前三个内容(aaa,bbb,ccc)在生成的iterator中。
Generateaniteratorwithcountattribute
generatorval="%{'aaa,bbb,ccc,ddd,eee'}"count="3">
iterator>
property/>
iterator>
generator>
例3:
生成iterator,使用了id属性,之后生成的对象放在pageContext中,可以通过指定的id来访问。
generatorval="%{'aaa,bbb,ccc,ddd,eee'}"count="4"separator=","id="myAtt"/>
<%
Iteratori=(Iterator)pageContext.getAttribute("myAtt");
while(i.hasNext())
{
Strings=(String)i.next();
%>
<%=s%>
<%
}
%>
例4:
生成iterator,使用converter属性,这里的convertor仅仅将每一个对象添加了一个"converter-"前缀。
generatorval="%{'aaa,bbb,ccc,ddd,eee'}"converter="%{myConverter}">
iterator>
property/>
iterator>
generator>
publicclassGeneratorTagActionextendsActionSupport{
....
publicConvertergetMyConverter(){
returnnewConverter(){
publicObjectconvert(Stringvalue)throwsException{
return"converter-"+value;
}
};
}
...
}
iterator标签
描述
迭代处理一个java.util.Connection或者java.util.Iterator对象
参数
名字
是否必须
默认值
可否使用表达式
类型
描述
id
否
是
String
Id,
status
否
否
是
Boolean
如果指定,在循环的过程中会保留一个IteratorStatus类型的变量,该变量用来查询当前迭代的状态
value
否
是
String
被迭代的对象
例子
例1:
iteratorvalue="days">
dayis:
property/>
iterator>
例2:
beanname="org.apache.struts2.example.IteratorExample"id="it">
paramname="day"value="'foo'"/>
paramname="day"value="'bar'"/>
bean>
Daysoftheweek |
---|
iteratorvalue="#it.days"status="rowstatus">
iftest="#rowstatus.odd==true">
grey">property/>
if>
else>
property/> |
else>
iterator>
例3:
iteratorvalue="groupDao.groups"status="groupStatus">
class="iftest="#groupStatus.odd==true">odd
if>else>even
else>">
propertyvalue="name"/> | propertyvalue="description"/> | iteratorvalue="users"status="userStatus"> propertyvalue="fullName"/> iftest="! #userStatus.last">,
if>
iterator>
|
iterator>
merge标签(同append?
)
描述
参数
例子
sort标签(JSP-Tag)
描述
对一个可以迭代的对象进行排序操作。
参数
名字
是否必须
默认值
可否使用表达式
类型
描述
Comparator
是
是
java.util.Comparator
排序用的比较器
Source
否
是
String
排序对象
例子
例1:
sortcomparator="myComparator"source="myList">
iterator>
--dosomethingwitheachsortedelements-->
propertyvalue="..."/>
iterator>
sort>
例2:
sortid="mySortedList"comparator="myComparator"source="myList"/>
<%
IteratorsortedIterator=(Iterator)pageContext.getAttribute("mySortedList");
for(Iteratori=sortedIterator;i.hasNext();){
//dosomethingwitheachofthesortedelements
}
%>
subset
描述
递归iterator的一部分
参数
名字
是否必须
默认值
可否使用表达式
类型
描述
count
False
是
Integer
Iterator中被递归的一部分的item的数量
Decider
否
是
org.apache.struts2.util.
SubsetIteratorFilter.Decider
用来判断iterator中的item是否包含在最终的subset内部
Source
否
是
String
Iterator的对象
Start
否
是
Integer
开始位置
例子
Java类
publicclassMySubsetTagActionextendsActionSupport{
publicStringexecute()throwsException{
l=newArrayList();
l.add(newInteger
(1));
l.add(newInteger
(2));
l.add(newInteger(3));
l.add(newInteger(4));
l.add(newInteger(5));
return"done";
}
publicInteger[]getMyArray(){
returna;
}
publicListgetMyList(){
returnl;
}
publicDecidergetMyDecider(){
returnnewDecider(){
publicbooleandecide(Objectelement)throwsException{
inti=((Integer)element).intValue();
return(((i%2)==0)?
true:
false);
}
};
}
}
--s:
Listbasic-->
subsetsource="myList">
iterator>
property/>
iterator>
subset>
--B:
Listwithcount-->
subsetsource="myList"count="3">
iterator>
property/>
iterator>
subset>
--C:
Listwithstart-->
subsetsource="myList"count="13"start="3">
iterator>
property/>
iterator>
subset>
--D:
Listwithid-->
subsetid="mySubset"source="myList"count="13"start="3"/>
<%
Iteratori=(Iterator)pageContext.getAttribute("mySubset");
while(i.hasNext()){
%>
<%=i.next()%>
<%}%>
--D:
ListwithDecider-->
subsetsource="myList"decider="myDecider">
iterator>
property/>
iterator>
subset>
数据标签
@TODO完成如下数据标签
数据标签包括
a
action
bean
date
debug
i18n
include
param
push
set
text
url
property
4.2节UI标签
UI标签主要是指Form相关的标签,UI标签又分为两部分:
form标签和构成form内部字段的其他标签。
每一个UI标签都是基于模板的,即:
每一个标签都有一个对应的模板用来生成UI标签的样式,详细内容参看模板节。
所有的UI标签都有着共通的祖先UIBean,UIBean提供了这些UI标签的一系列共通的属性,这些属性可以分为三类:
模版相关的属性,JavaScript相关的属性和其他通用属性。
模版相关属性:
属性
主题
数据类型
说明
templateDir
n/a
String
定义模版目录
theme
n/a
String
定义主题的名字
template
n/a
String
定义模版名字
JavaScript相关属性:
属性
主题
数据类型
说明
onclick
simple
String
htmljavascriptonclick属性
ondbclick
simple
String
htmljavascriptondbclick属性
onmousedown
simple
String
htmljavascriptonmousedown属性
onmouseup
simple
String
htmljavascriptonmouseup属性
onmouseover
simple
String
htmljavascriptonmouseover属性
onmouseout
simple
String
htmljavascriptonmouseout属性
onfocus
simple
String
htmljavascriptonfocus属性
onblur
simple
String
htmljavascriptonblur属性
onkeypress
simple
String
htmljavascriptonkeypress属性
onkeyup
simple
String
htmljavascriptonkeyup属性
onkeydown
simple
String
htmljavascriptonkeydown属性
onselect
simple
String
htmljavascriptonselect属性
onchange
simple
String
htmljavascriptonchange属性
Tooltip相关属性:
属性
数据类型
默认值
说明
tooltip
String
none
为指定的组件设置Tooltip
jsTooltipEnabled
String
false
使用js表示tooltip
tooltipIcon
String
/struts/static/tooltip/tooltip.gif
指向tooltip图表的URL
tooltipDelay
String
500
多长时间后显示Tooltip
key
simple
String
这个输入字段对应的属性,用来自动设置name,label和value
通用属性:
属性
主题
数据类型
说明
cssClass
simple
String
定义htmlclass属性
cssStyle
simple
String
定义htmlstyle属性
title
simple
String
定义htmltitle属性
disabled
simple
String
定义htmldisabled属性
label
xhtml
String
定义form字段的标签
labelPosition
xhtml
String
定义标签在Form中的位置,从左从上计算
requiredPosition
xhtml
String
定义必须的标签在Form中的位置,从左从上计算
name
simple
String
定义form字段的name映射
required
xhtml
Boolean
在label上添加一个*
tabIndex
simple
String
定义htmltabIndex属性
value
simple
Object
定义form字段的值
对于name和value的说明:
name用来说明Form字段的名字,和Action类的属性对应。
value用来记录Form字段的值,和Action类中属性的值对应。
所以在修改一个字段的内容的时候应该使用如下的标签:
formaction="updateAddress">
textfieldlabel="PostalCode"name="postalCode"value="%{postalCode}"/>
...
form>
但是,由于name和value的关系,struts2标准标签可以自动对应,所以也可以使用如下标签:
formaction="updateAddress">
textfieldlabel="PostalCode"name="postalCode"/>
...
form>
UI标签说明:
Form部分
autocompleter
checkbox
checkboxlist
combobox
datetimepicker
doubleselect
head
file
form
hidden
label
optiontransferselect
optgroup
password
radio
reset
select
submit
textarea
textfield
token
updownselect
非Form部分:
actionerror
actionmessage
component
div
fielderror
table
tabbedPanel
tree
treenode
4.3节主题和模板
概念说明:
标签(tag):
一小段代码,在JSP,Velocity或者FreeMarker中执行。
程序开发的最小单位,用来生成HTML对应的元素。
模板(template):
一些代码,通常使用FreeMarker写成,可以被某些Tag表示出来(通常是UITag)。
主题(theme):
一组模板打包在一起,提供通用功能的模版
主题和模板主要针对可视化的标签(Tag)而言,使用以下例子来说明三者之间的关系。
假如我们要开发如下的一个画面:
我们使用如下的代码:
urlaction="login"id="loginUrl">
url>
formaction="%{loginUrl}">
textfieldlabel="Name"name="name"/>
passwordlabel="Password"name="password"/>
submit>
submit>
reset>
reset>
form>
这里form>,textfield>,