`
冷静
  • 浏览: 146917 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

Struts2 标签库 [Tablib]

阅读更多
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">
<div st
分享到:
评论

相关推荐

    【转】Struts2 标签库 [Tablib]

    在Struts2框架中,标签库是其核心组件之一,极大地简化了视图层的开发工作。本文将深入探讨Struts2的标签库,包括其基本概念、常用标签及其使用方法,并通过实例来帮助理解。 一、Struts2标签库概述 Struts2标签库...

    Struts2_Tablib.jar 能用的标签库

    `Struts2_Tablib.jar` 是Struts2框架的一个扩展,它包含了丰富的标签库,用于增强应用的功能和用户体验。 `struts-taglib-1.3.8.jar` 是Struts2的基础标签库,这个版本为1.3.8,它提供了许多常用的标签,如`s:...

    struts2 标签库

    方便实用的struts2标签 struts2标签库 struts2 Tablib

    struts2开发 tablib.rar

    根据提供的标签“源码”和“工具”,我们可以推断这个压缩包可能是用于学习或者开发的一个Struts2示例项目,包含了项目的源代码和开发环境配置。在实际开发中,Struts2框架提供了Action、Interceptor(拦截器)、...

    Struts2 demo2

    6. **tablib**: Tablib可能指的是Struts2的标签库,它提供了一系列预定义的JSP标签,简化视图层的开发,如表单元素、数据展示等。 通过这些知识点,我们可以了解到"Struts2 demo2"可能涵盖了Struts2的核心特性,如...

    JSP指令元素-tablib

    TLD文件是标签库的元数据,它包含了关于标签库中所有标签和函数的信息。每个自定义标签都需要在TLD中注册,以便JSP容器能够识别并处理它们。TLD文件通常以`.tld`为扩展名,并且必须放置在特定的目录结构下,以便JSP...

    itcast Struts源码

    7. **Tablib**:Tablib可能指的是Java中的标签库,它提供了一系列预定义的JSP标签,可以简化视图层的开发,使得JSP页面更加清晰易读。 这些内容都是Struts2框架核心功能的一部分,通过学习和理解这些知识点,开发者...

    企业综合信息管理网站设计与开发论文

    此外,论文还可能涉及到自定义标签库tablib--VoteFunction,这可能是为了定制特定的功能或增强用户体验。 数据库方面,系统选择了SQL Server,这是一款功能强大的关系型数据库管理系统,能有效支持大量数据的存储和...

    java自学计划安排

    - **Struts2**:一个基于MVC设计模式的Web应用框架,提供了丰富的标签库和插件支持。 - **Spring**:一个轻量级的Java应用开发框架,主要用于简化企业级应用的开发过程。 - **Hibernate**:一个ORM(对象关系映射)...

Global site tag (gtag.js) - Google Analytics