`
kobexing933
  • 浏览: 115755 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

第四章 Taglib Struts标签库

阅读更多

第四章 Tablib Struts标签库

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

分享到:
评论

相关推荐

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...

    Java语言基础下载

    第四章: Java语法基础 47 学习目标 47 基本语法元素 48 Java关键字 49 基本Java数据类型 50 变量声明和赋值 52 引用(Reference)类型 52 存储器分配和布局 53 this引用 55 Java编码约定 56 运算符的优先级 58 升级...

    网上商城需求报告

    第四步:写实体类 entity User 第五步:复制util、Factory包、复制四个src下面的配置文件。 第六步:写dao接口 UserDao BaseDao public void save(User user) throws Exception; public boolean valiEmail...

    基于J2EE框架的个人博客系统项目毕业设计论...

    而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。 2、 Ajax...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。 2、 Ajax...

    dangdang和smartstruts2.rar

    第四步:写实体类 entity User 第五步:复制util、Factory包、复制四个src下面的配置文件。 第六步:写dao接口 UserDao BaseDao public void save(User user) throws Exception; public boolean valiEmail...

    ssh(structs,spring,hibernate)框架中的上传下载

    Struts+Spring+Hibernate实现上传下载    本文将围绕SSH文件上传下载的主题,向您详细讲述如何开发基于SSH的Web程序。SSH各框架的均为当前最新版本:  •Struts 1.2  •Spring 1.2.5  •Hibernate 3.0  本文...

    spring security 参考手册中文版

    第四部分 Web应用程序安全 112 13.安全过滤器链 112 13.1 DelegatingFilterProxy 112 13.2 FilterChainProxy 113 13.2.1绕过滤网链 115 13.3过滤器排序 115 13.4请求匹配和HttpFirewall 116 13.5与其他基于过滤器的...

    超级有影响力霸气的Java面试题大全文档

    当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...

    java 面试题 总结

    28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 public class ThreadTest1{ private int j; public static ...

Global site tag (gtag.js) - Google Analytics