Struts2标签库1、控制标签

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

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

例子

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

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

名字是否必须可否使用表达式类型描述
idfalsetrueString用来保存结果的对象在 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(迭代器)。

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

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

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

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

<s:set name="list" value="{'tom','jack','james'}" />
<s:iterator value="#list" status="st">
	<font color=<s:if test="#st.odd">red</s:if><s:else>blue</s: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 标签
对一个可以迭代的对象进行排序操作。

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

例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}内部执行子集功能。

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

例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: 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 var -->
<s:subset var="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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值