Lotus教程、Java教程、Java虚拟机、Java软件综合开发社区

Lotus、Domino、Java、C#、Web、数据库综合开发教程、资料社区

Struts2 标签库 [Tablib] (转)



Published by admin on 05月 27, 2008

Struts2 Taglib抽象了不同表示技术,现在Struts2主要支持三种表示技术:JSP,FreeMarkerVelocity。但部分的Tag在三种表示技术下都可以使用,但是也有部分只能在某一种情况下使用。

Tab可以分为两类:通用标签和UI标签。

4.1节 通用标签

通用标签用来在页面表示的时候控制代码执行的过程,这些标签也允许从Action或者值堆栈中取得数据。例如地域,JavaBeansURLs,和action

控制标签控制程序执行,例如:ifelse,iterator

数据标签管理数据的取得和创建,例如:beanpush,i18n

控制标签

if标签

描述

If标签用来控制基本的条件处理流程,通常和else标签或者elseif标签连用。

参数

名字

是否必须

默认值

可否使用表达式

类型

描述

id

String

用来表示该元素,对于UIForm标签来说直接转变为HTML id属性

test

Boolean

用来决定是否显示标签内部内容的表达式

例子

<s:if test=”%{false}”>

<div>Will Not Be Executed</div>

</s:if>

<s:elseif test=”%{true}”>

<div>Will Be Executed</div>

</s:elseif>

<s:else>

<div>Will Not Be Executed</div>

</s:else>

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:param value=”%{myList1}” />

<s:param value=”%{myList2}” />

<s:param value=”%{myList3}” />

</s:append>

<s:iterator value=”%{#myAppendIterator}”>

<s:property />

</s:iterator>

generator 标签(JSP Tag

描述

val属性生成一个iterator

参数

例子

1:

生成一个简单的iterator,并且使用iterator标签打印出内容。

<s:generator val=”%{’aaa,bbb,ccc,ddd,eee’}”>

<s:iterator>

<s:property /><br/>

</s:iterator>

</s:generator>

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:iterator>

<s:property /><br/>

</s:iterator>

</s:generator>

3:

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

<s:generator val=”%{’aaa,bbb,ccc,ddd,eee’}” count=”4″ separator=”,” id=”myAtt” />

<%

Iterator i = (Iterator) pageContext.getAttribute(”myAtt”);

while(i.hasNext()) {

String s = (String) i.next();

%>

<%= s %> <br/>

<%

}

%>

4:

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

<s:generator val=”%{’aaa,bbb,ccc,ddd,eee’}” converter=”%{myConverter}”>

<s:iterator>

<s:property /><br/>

</s:iterator>

</s:generator>

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”>

<p>day is: <s:property/></p>

</s:iterator>

2

<s:bean name=”org.apache.struts2.example.IteratorExample” id=”it”>

<s:param name=”day” value=”‘foo’”/>

<s:param name=”day” value=”‘bar’”/>

</s:bean>

<p/>

<table border=”0″ cellspacing=”0″ cellpadding=”1″>

<tr>

<th>Days of the week</th>

</tr>

<p/>

<s:iterator value=”#it.days” status=”rowstatus”>

<tr>

<s:if test=”#rowstatus.odd == true”>

<td style=”background: grey”><s:property/></td>

</s:if>

<s:else>

<td><s:property/></td>

</s:else>

</tr>

</s:iterator>

</table>

3

<s:iterator value=”groupDao.groups” status=”groupStatus”>

<tr

class=”<s:if test=”#groupStatus.odd == true “>odd</s:if><s:else>even</s:else>”>

<td><s:property value=”name” /></td>

<td><s:property value=”description” /></td>

<td>

<s:iterator value=”users” status=”userStatus”>

<s:property value=”fullName” />

<s:if test=”!#userStatus.last”>,</s:if>

</s:iterator>

</td>

</tr>

</s:iterator>

merge 标签(append

描述

参数

例子

sort 标签(JSP-Tag

描述

对一个可以迭代的对象进行排序操作。

参数

名字

是否必须

默认值

可否使用表达式

类型

描述

Comparator

java.util.Comparator

排序用的比较器

Source

String

排序对象

例子

1:

<s:sort comparator=”myComparator” source=”myList”>

<s:iterator>

<!– do something with each sorted elements –>

<s:property value=”…” />

</s:iterator>

</s:sort>

2:

<s:sort id=”mySortedList” comparator=”myComparator” source=”myList” />

<%

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(2));

l.add(new Integer(3));

l.add(new Integer(4));

l.add(new Integer(5));

return “done”;

}

public Integer[] getMyArray() {

return a;

}

public List getMyList() {

return l;

}

public Decider getMyDecider() {

return new Decider() {

public boolean decide(Object element) throws Exception {

int i = ((Integer)element).intValue();

return (((i % 2) == 0)?true:false);

}

};

}

}

<!– s: List basic –>

<s:subset source=”myList”>

<s:iterator>

<s:property />

</s:iterator>

</s:subset>

<!– B: List with count –>

<s:subset source=”myList” count=”3″>

<s:iterator>

<s:property />

</s:iterator>

</s:subset>

<!– C: List with start –>

<s:subset source=”myList” count=”13″ start=”3″>

<s:iterator>

<s:property />

</s:iterator>

</s:subset>

<!– D: List with id –>

<s:subset id=”mySubset” source=”myList” count=”13″ start=”3″ />

<%

Iterator i = (Iterator) pageContext.getAttribute(”mySubset”);

while(i.hasNext()) {

%>

<%=i.next() %>

<% } %>

<!– D: List with Decider –>

<s:subset source=”myList” decider=”myDecider”>

<s:iterator>

<s:property />

</s:iterator>

</s:subset>

数据标签

@TODO 完成如下数据标签

数据标签包括

a

action

bean

date

debug

i18n

include

param

push

set

text

url

property


下一篇文章:struts2标签库[tablib]② »

【版权说明】:本网页上有部分内容来源于网上收集,但不能保证资料的完整性和准确性,仅提供参考和学习。如有侵权请立即通知我们,我们将立即删除,谢谢合作!

Add A Comment