Struts2 Taglib
抽象了不同表示技术,现在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标签来说直接转变为HTML id属性
|
test
|
是
|
|
是
|
Boolean
|
用来决定是否显示标签内部内容的表达式
|
例子
<s:if test="%{false}"></s:if>
Will Not Be Executed
<s:elseif test="%{true}"></s:elseif>
Will Be Executed
<s:else></s:else>
Will Not Be Executed
elseIf
标签
参考if标签
else
标签
参考if标签
append
标签
描述
用来做iterator标签的辅助,将不同iterator中的内容合在一个iterator中。
参数
名字
|
是否必须
|
默认值
|
可否使用表达式
|
类型
|
描述
|
id
|
否
|
|
是
|
String
|
用来保存结果iterator的对象在value context中的名字。
|
例子
Action
类
public class AppendIteratorTagAction extends ActionSupport {
private List myList1;
private List myList2;
private List myList3;
public String execute() throws Exception {
myList1 = new ArrayList();
myList1.add("1");
myList1.add("2");
myList1.add("3");
myList2 = new ArrayList();
myList2.add("a");
myList2.add("b");
myList2.add("c");
myList3 = new ArrayList();
myList3.add("A");
myList3.add("B");
myList3.add("C");
return "done";
}
public List getMyList1() { return myList1; }
public List getMyList2() { return myList2; }
public List getMyList3() { return myList3; }
标签使用
<s:append id="myAppendIterator"></s:append>
<s:param value="%{myList1}">
<s:param value="%{myList2}">
<s:param value="%{myList3}">
<s:iterator value="%{#myAppendIterator}"></s:iterator>
<s:property></s:property>
generator
标签(JSP Tag)
描述
从val属性生成一个iterator。
参数
例子
例1:
生成一个简单的iterator,并且使用iterator标签打印出内容。
<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}"></s:generator>
<s:iterator></s:iterator>
<s:property></s:property>
例2:
生成一个iterator,使用count属性。因为count属性值为3,所以只有前三个内容(aaa,bbb,ccc)在生成的iterator中。
Generate an iterator with count attribute
<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" count="3"></s:generator>
<s:iterator></s:iterator>
<s:property></s:property>
例3:
生成iterator,使用了id属性,之后生成的对象放在pageContext中,可以通过指定的id来访问。
<s:generator id="myAtt" val="%{'aaa,bbb,ccc,ddd,eee'}" count="4" separator=","></s:generator>
例4:
生成iterator,使用converter属性,这里的convertor仅仅将每一个对象添加了一个"converter-"前缀。
<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" converter="%{myConverter}"></s:generator>
<s:iterator></s:iterator>
<s:property></s:property>
public class GeneratorTagAction extends ActionSupport {
....
public Converter getMyConverter() {
return new Converter() {
public Object convert(String value) throws Exception {
return "converter-"+value;
}
};
}
...
}
iterator
标签
描述
迭代处理一个java.util.Connection或者java.util.Iterator对象
参数
名字
|
是否必须
|
默认值
|
可否使用表达式
|
类型
|
描述
|
id
|
否
|
|
是
|
String
|
Id
,
|
status
|
否
|
否
|
是
|
Boolean
|
如果指定,在循环的过程中会保留一个IteratorStatus类型的变量,该变量用来查询当前迭代的状态
|
value
|
否
|
|
是
|
String
|
被迭代的对象
|
例子
例1:
<s:iterator value="days"></s:iterator>
day is: <s:property></s:property>
例2:
<s:bean id="it" name="org.apache.struts2.example.IteratorExample"></s:bean>
<s:param name="day" value="'foo'">
<s:param name="day" value="'bar'">