轻量级JavaEE企业应用实战(十四)

控制标签

Struts2的非UI标签包括:控制标签和数据标签,主要用于完成流程控制,以及操作Struts2的ValueStack。
数据标签主要结合OGNL表达式进行数据访问
控制标签可以完成流程控制,如分支、循环,也可完成对集合的合并、排序等操作

if/elseif/else标签

<s:if test="表达式">
    ...
</s:if>
<s:elseif test="表达式">
    ...
</s:elseif>
<s:else>
    ...
</s:else>

例:
<s:set name="age" value="22" />
<s:if test="#age > 60">
    老年人
</s:if>

iterator

属性:value、id、status都是可选属性

<s:iterator value="{'111', '222', '333'}" id="name" status="st">
    <tr>
        <td><s:property value="#st.count" /></td>
        <td><s:property value="name" /></td>
    </tr>
</s:iterator>

如果该标签指定status属性,即每次迭代都会有一个IteratorStatus实例,包含方法:

int getCount() //当前迭代了几个元素
int getIndex() //当前迭代元素索引
boolean isEven() //当前被迭代元素索引是否是一个偶数
boolean isFirst() //当前被迭代元素索引是否是第一个元素
boolean isLast() //当前被迭代元素索引是否是最后一个元素
boolean isOdd() //当前被迭代元素索引是否是奇数

append标签

将多个集合对象拼接起来,组成一个新的结合。通过这个拼接,从而允许通过一个iterator标签完成对多个集合的迭代
使用该标签需要指定一个var属性(可以是id,推荐是var),表示新集合的名字

<s:append var="newList">
    <s:param value="{'111', '222', '333'}" />
    <s:param value="{'444', '555'}" />
</s:append>

<s:iterator value="#newList" status="st" id="ele">
    <tr <s:if test="#st.odd"> style="background-color:#bbbbbb"</s:if>>
        <td><s:property value="#st.count" /></td>
        <td><s:property value="ele" /></td>
    </tr>
</s:iterator>

generator标签

将制定字符串按指定分隔符分隔成多个子串,临时生成的子串可以使用iterator标签迭代输出
作用类似于String对象的split方法,但这个标签比split强大
属性:

count //必填,指定生成集合元素的元素的总数
separator //必填,指定解析字符串的分隔符
val //必填,指定被解析的字符串
converter //可选,指定一个转换器,讲集合中的每个字符串转换成对象,
//可以将一个字符串解析成对象集合。该属性必须是个
//org.apache.Struts2.util.IteratorGenerator.Converter对象
var //可选,将生成的Iterator对象放入Stack Context中

<s:generator val="'111','222','333'" separator=",">
    <s:iterator status="st">
        <tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>
        </tr>
    </s:iterator>
</s:generator>

merge标签

与append类似,产生的新集合会有所区别:
采用merge,会将所有集合的第一个元素拼接起来,在对所有集合的下一个元素进行拼接

subset标签

取得集合的子集;底层通过dor.apache.struts2.util.Subset.IteratorFilter类提供实现:

count //可选,指定子集中元素的个数,如果不指定,默认获取所有
source //可选,指定源集合。如果不指定,默认取得ValueStack栈顶元素
start //可选,指定子集从源集合的第几个元素开始截取,默认从第一个(0)开始
decider //可选,由开发者子集决定是否选中该元素。该属性必须指定一个
    //org.apache.struts2.util.SubsetIteratorFilter.Decider对象
var //可选,如果指定该属性,生成的Iterator对象设置成page范围的属性

<s:subset source="{'111', '222', '333', '444', '555'}" 
start="1", count="4">
    <s:iterator status="st">
        <tr<s:if test="#st.odd">
            style="background-color:#bbbbbb"</s:if>>
            ...
        </tr>
    </s:iterator>
</s:subset>

<s:bean var="mydecider" name="com.uril.MyDecider">
<s:subset source="{'111', '222', '333', '444', '555'}" 
decider="#mydecider" var="newList">
    <s:iterator status="st" value="#attr.newList">
        <tr<s:if test="#st.odd">
            style="background-color:#bbbbbb"</s:if>>
            ...
        </tr>
    </s:iterator>
</s:subset>

sort标签

用于指定的集合元素进行排序,必须提供自己的排序规则,即自己实现Comparator,需要实现java.util.Comparator接口

comparator //必填,指定进行排序的Comparator实例
source //可选,指定被排序的集合,如果不指定,则选用ValueStack栈顶元素
var //可选,讲生成的Iterator对象设置成page范围的属性,不放入Stack Context中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值