struts2标签(一)

2014-11-24 02:29:09 · 作者: · 浏览: 0
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 用来决定是否显示标签内部内容的表达式


例子

Will Not Be Executed



Will Be Executed



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; }

标签使用









generator 标签(JSP Tag)
描述
从val属性生成一个iterator。

参数
例子
例1:
生成一个简单的iterator,并且使用iterator标签打印出内容。







例2:
生成一个iterator,使用count属性。因为count属性值为3,所以只有前三个内容(aaa,bbb,ccc)在生成的iterator中。
Generate an iterator with count attribute








例3:
生成iterator,使用了id属性,之后生成的对象放在pageContext中,可以通过指定的id来访问。

<%
Iterator i = (Iterator) pageContext.getAttribute("myAtt");
while(i.hasNext()) {
String s = (String) i.next();
%>
<%= s %>

<%
}
%>

例4:
生成iterator,使用converter属性,这里的convertor仅仅将每一个对象添加了一个"converter-"前缀。








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:

day is:




例2:




















Days of the week


例3:

class=" odd even ">





,





merge 标签(同append?)
描述
参数
例子

sort 标签(JSP-Tag)
描述
对一个可以迭代的对象进行排序操作。

参数

名字 是否必须 默认值 可否使用表达式 类型 描述
Comparator 是 是 java.util.Comparator 排序用的比较器
Source 否 是 String 排序对象


例子
例1:







例2:

<%
Iterator sortedIterator = (Iterator) pageContext.getAttribute("mySortedList");
for (Iterator i = sortedIterator; i.hasNext(); ) {
// do something with each of the sorted elements
}
%>

subset
描述
递归iterator的一部分

参数
名字 是否必须 默认值 可否使用表达式 类型 描述
count False 是 Integer Iterator中被递归的一部分的item的数量
Decider 否 是 org.apache.struts2.util.
SubsetIteratorFilter.Decider 用来判断iterator中的item是否包含在最终的subset内部
Source 否 是 String Iterator的对象
Start 否 是 Integer 开始位置


例子
Java类

public class MySubsetTagAction extends ActionSupport {
public String execute() throws Exception {
l = new ArrayList();
l.add(new Integer(1));
l.add(new Integer(