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}">
<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">
<div st
分享到:
相关推荐
在Struts2框架中,标签库是其核心组件之一,极大地简化了视图层的开发工作。本文将深入探讨Struts2的标签库,包括其基本概念、常用标签及其使用方法,并通过实例来帮助理解。 一、Struts2标签库概述 Struts2标签库...
`Struts2_Tablib.jar` 是Struts2框架的一个扩展,它包含了丰富的标签库,用于增强应用的功能和用户体验。 `struts-taglib-1.3.8.jar` 是Struts2的基础标签库,这个版本为1.3.8,它提供了许多常用的标签,如`s:...
方便实用的struts2标签 struts2标签库 struts2 Tablib
根据提供的标签“源码”和“工具”,我们可以推断这个压缩包可能是用于学习或者开发的一个Struts2示例项目,包含了项目的源代码和开发环境配置。在实际开发中,Struts2框架提供了Action、Interceptor(拦截器)、...
6. **tablib**: Tablib可能指的是Struts2的标签库,它提供了一系列预定义的JSP标签,简化视图层的开发,如表单元素、数据展示等。 通过这些知识点,我们可以了解到"Struts2 demo2"可能涵盖了Struts2的核心特性,如...
TLD文件是标签库的元数据,它包含了关于标签库中所有标签和函数的信息。每个自定义标签都需要在TLD中注册,以便JSP容器能够识别并处理它们。TLD文件通常以`.tld`为扩展名,并且必须放置在特定的目录结构下,以便JSP...
7. **Tablib**:Tablib可能指的是Java中的标签库,它提供了一系列预定义的JSP标签,可以简化视图层的开发,使得JSP页面更加清晰易读。 这些内容都是Struts2框架核心功能的一部分,通过学习和理解这些知识点,开发者...
此外,论文还可能涉及到自定义标签库tablib--VoteFunction,这可能是为了定制特定的功能或增强用户体验。 数据库方面,系统选择了SQL Server,这是一款功能强大的关系型数据库管理系统,能有效支持大量数据的存储和...
- **Struts2**:一个基于MVC设计模式的Web应用框架,提供了丰富的标签库和插件支持。 - **Spring**:一个轻量级的Java应用开发框架,主要用于简化企业级应用的开发过程。 - **Hibernate**:一个ORM(对象关系映射)...