Struts2—非UI标签—控制标签

控制标签可以完成流程控制,如分支循环等,也可以完成对集合的合并等操作。
控制标签有如下9个。

if :用于控制选择输出的标签
elseif:与if标签结合使用,用于控制选择输出的标签
else :与if标签结合使用,用于控制选择输出的标签
iterator:是一个迭代器,用于将集合迭代输出
sort:用于对集合排序
append:用于将多个集合拼接成一个新的集合
generator:是一个字符串解析器,用于将一个字符串解析成一个新的集合
merge:用于将多个集合拼接成一个新的集合,但与append的拼接方式有所有不同
subset:用于截取集合的部分元素,形成一个新的集合

1、if/elseif/else的使用

<!-- 在Stack Context中定义一个age属性,其值为29 -->
<s:set name="age" value="29"/>
<!-- 如果Stack Context中的age属性大于60 -->
<s:if test="#age>60">
    老年人
</s:if>
<!-- 如果Stack Context中的age属性大于35 -->
<s:elseif test="#age>35">
    中年人
</s:elseif>
<!-- 如果Stack Context中的age属性大于15 -->
<s:elseif test="#age>15">
    青年人
</s:elseif>
<s:else>
    少年
</s:else>

2.iterator标签
用于对集合进行迭代,这里的集合包含List、Set和数组,也可以对Map集合进行迭代输出。

value:指定要迭代的集合,没指定时,则使用值栈栈顶集合
id:指定该集合里元素的ID
status:可选属性

<s:iterator value="pagebean.beanList" var="data" >
        <tr align="center">
            <td><s:property value="#data.paporder" /></td>
        </tr>    
</s:iterator>

如果为iterator指定status属性
有如下几个方法:

  • int getCount():返回当前迭代了几个元素
  • int getIndex():返回当前迭代元素的索引
  • boolean isEven();返回当前被迭代元素的索引是否为偶数
  • boolean isOdd();返回当前被迭代元素的索引是否为奇数
  • boolean isFirst();返回当前被迭代元素是否为第一个
  • boolean isLast();返回当前被迭代元素是否为最后一个
<!-- 迭代输出List集合 -->
<s:iterator value="{'苹果','香蕉','西瓜'}" id="name" status="st">
    <tr <s:if test="#st.odd"> style="background-color:#bbbbbb"</s:if>>
        <td><s:property value="name"/></td>
    </tr>
</s:iterator>
<!-- 对指定的Map对象进行迭代输出,并指定status属性 -->
<s:iterator value="#{'姓名':'Mary','年龄':'22' ,'学历':'硕士'}"  id="score" status="st">
    <!-- 根据当前被迭代元素的索引是否为奇数来决定是否使用背景色 -->
    <tr <s:if test="#st.odd">
        style="background-color:#bbbbbb"</s:if>>
        <!-- 输出Map对象里Entry的key -->
        <td><s:property value="key"/></td>
        <!-- 输出Map对象里Entry的value -->
        <td><s:property value="value"/></td>
    </tr>
</s:iterator>

3.generator标签
可以将指定字符串按指定的分隔符分割成多个子串。临时生成的子串集合位于ValueStack的顶端,一旦generator标签结束,该集合将被移出ValueStack

val属性:用于指定被解析的字符串
separate:指定分隔符
count:可选属性,用于指定该集合中元素的总数,要前几个,后几个消失
converter:可以将字符串解析成对象集合
var:可选属性,如果指定了该属性,则将生成的Iterator放入Stack Context中。

<!-- 使用generator标签将指定字符串解析成Iterator集合
    在generator标签内,得到的List集合位于ValueStack顶端 -->
<s:generator val="'西瓜,苹果,香蕉'" separator=",">
<!-- 没有指定迭代哪个集合,直接迭代ValueStack顶端的集合 -->
<s:iterator status="st">
    <tr <s:if test="#st.odd">
        style="background-color:#bbbbbb"</s:if>>
        <td><s:property/></td>
    </tr>
</s:iterator>
</s:generator>
<!-- 使用generator将一个字符串解析成一个集合
    ,指定了var和count属性 -->
<s:generator val="'三国演义,水浒传,西游记,红楼梦'" separator="," var="books" count="2"/>
   <!-- 迭代输出Stack Congtext中的books集合 -->
      <s:iterator value="#books">
         <tr>
             <td><s:property/></td>
         </tr>
</s:iterator>
//上述代码只输出了前两本书。

4.merge
用于将多个集合拼接成一个

<s:merge id="newList">
    <s:param value="{'疯狂Java讲义',
        '轻量级Java EE企业应用实战',
        '疯狂iOS讲义'}" />
    <s:param value="{'http://www.crazyit.org', 
        'http://www.fkit.org'}" />
</s:merge>
<table border="1" width="240">
<s:iterator value="#newList" status="st">
    <tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>
        <td><s:property/></td>
    </tr>
</s:iterator>

5.append
将多个集合对象拼接起来,组成一个新的集合
6.sort
对指定的集合元素进行排序,必须自己定义排序规则
7.subset
用于取得集合的子集

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值