Struts2标签库1、控制标签

通用标签用来在页面表示的时候控制代码执行的过程,这些标签也允许从Action或者值栈中取得数据。
if标签、else 标签、elseIf 标签
If标签用来控制基本的条件处理流程,通常和else标签或者elseif标签连用。

名字 是否必须 可否使用表达式 类型 描述
id false true String 用来表示该元素,对于UI和Form标签来说直接转变为HTML id属性
test true true Boolean 用来决定是否显示标签内部内容的表达式

例子

<s:if test="%{false}">
    <div>Will Not Be Executeddiv>
s:if>
<s:elseif test="%{true}">
    <div>Will Be Executeddiv>
s:elseif>
<s:else>
    <div>Will Not Be Executeddiv>
s:else>

append标签
用来做标签的辅助,将不同中的内容合在一个中。

名字 是否必须 可否使用表达式 类型 描述
id false true String 用来保存结果的对象在 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 标签
从val属性生成一个iterator(迭代器)。

名字 是否必须 可否使用表达式 类型 描述
converter false false org.apache.struts2.util.IteratorGenerator.Converter 将从 val 解析的字符串项转换为对象
count false false Integer 迭代的最大次数
separator true false String 用于将 val 分隔为iterator(迭代器)的条目
val true false String 要解析为iterator(迭代器)的资源,如Java中的List,String等
var false false String 如果提供了该名称,则将结果迭代器存储到页面上下文中

例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中。

<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对象

名字 是否必须 默认值 能否使用表达式 类型 描述
begin false 0 false Integer 指定迭代的开始位置
end false 可迭代对象的最大长度,如果 ‘step’ 为负数则为0 false Integer 指定迭代的终点位置
status false false false Boolean 该变量用来查询当前迭代的状态,该实例包含如下几个方法:getCount(),返回当前迭代了几个元素。getIndex(),返回当前迭代元素的索引。isEven(),返回当前被迭代元素的索引是否是偶数。isOdd(),返回当前被迭代元素的索引是否是奇数。isFirst(),返回当前被迭代元素是否是第一个元素。isLast(),返回当前被迭代元素是否是最后一个元素。
step false 1 false Integer 指定迭代的步长
value false false String 要迭代的可迭代源,即被迭代的对象
var false false String 指向值栈中的值

例1: 将索引为奇的元素字体设为红色,为偶的字体设为蓝色。

<s:set name="list" value="{'tom','jack','james'}" />
<s:iterator value="#list" status="st">
	<font color= test="#st.odd">reds:if><s:else>blues:else>>
	<s:property />font><br>
s:iterator> 

例2:从action类中获取 users 对象,并迭代对象。

<s:iterator  value="users" var="user" >
  <s:property value="#user.id" /><br>
  <s:property value="#user.name" /><br>
  <s:property value="#user.password" /><br>
  <s:property value="#user.phone"/><br>
s:iterator>

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

名字 是否必须 可否使用表达式 类型 描述
Comparator true true java.util.Comparator 排序用的比较器
Source false true String 排序对象
var false false String 创建一个对象,保存排序后的结果

例1:

<s:sort comparator="myComparator" source="myList">
     <s:iterator>
     
     <s:property value="..." />
     s:iterator>
s:sort>

例2:

<s:sort var="mySortedList" comparator="myComparator" source="myList" />

<%
   Iterator sortedIterator = (Iterator) pageContext.getAttribute("mySortedList");
   for (Iterator i = sortedIterator; i.hasNext(); ) {
     // 对每个排序后的元素进行处理
   }
%>

subset标签
递归的一部分,接受迭代器并输出其子集的标记。委托给{@link org.apache.struts2.util。SubsetIteratorFilter}内部执行子集功能。

名字 是否必须 可否使用表达式 类型 描述
count false false Integer 指示结果子集迭代器中要包含的项数
Decider false false org.apache.stru2.util. SubsetFilter.Decider 用于插入一个判定器,以确定该特定条目是否包括在结果子集迭代器中
Source false false String 指示要基于其派生出的子集迭代器的源
Start false false Integer 指示源中可用项的起始索引,作为结果子集迭代器中的第一个项
var false false String 将结果迭代器存储到页面上下文中的名称

例1:

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:subset source="myList">
   <s:iterator>
      <s:property />
   s:iterator>
s:subset>
 
<s:subset source="myList" count="3">
   <s:iterator>
       <s:property />
   s:iterator>
 s:subset>

<s:subset source="myList" count="13" start="3">
   <s:iterator>
     <s:property />
   s:iterator>
s:subset>

<s:subset var="mySubset" source="myList" count="13" start="3" />
<%
    Iterator i = (Iterator) pageContext.getAttribute("mySubset");
    while(i.hasNext()) {
%>
<%=i.next() %>
<%  } %>
 
     <s:subset source="myList" decider="myDecider">
            <s:iterator>
                 <s:property />
            s:iterator>
     s:subset>

你可能感兴趣的:(Java,EE)