Struts2标签库笔记之控制标签

if/elseif/else:分支控制

test=用来测试的逻辑表达式,接受1或0的逻辑运算结果,利用"%{}"进行运算
调用方法如下:

<s:set name="month" value="8"/>  
<s:if test=%{#month>=2&&#month<=4}>  
    Spring  
</s:if>  
<s:elseif test=%{#month>=5&&#month<=7}>  
    Summer  
</s:elseif>  
<s:elseif test=%{#month>=8&&#month<=10}>  
    Fall  
</s:elseif>  
<s:else>  
    Winter  
</s:else>  

iterator:迭代器

value=被迭代的集合,可以使List、Set、Map或者数组,通常使用OGNL表达式指定。如果没有指定value属性,则使用ValueStack栈顶的集合
id=制定集合中元素的ID,可以利用该属性访问集合中的单个元素
status=指定迭代时IteratorStatus实例,用以判断当前迭代元素的属性,比如迭代元素是否为最后一个以及当前迭代元素的索引值是多少
调用方法如下:

1:迭代简单集合:

<table border=1 width=200>  
    <s:iterator value="{'Friskit','20','Java EE','Struts'}" id="misc" status="sta">  
        <tr <s:if test="#sta.odd">style="background-color:#eeeeee"</s:if>>  
            <td><s:property value="misc"/></td>  
        </tr>  
    </s:iterator>  
</table>  

2:迭代Map对象,在迭代Map对象的时候每个key-value键值对被当成一个集合元素。为了分别取出Map中的每项key和value,使用property标签的时候,通过指定value的属性为value和key来实现(不同于迭代集合中使用id标签),代码如下:

<table border=1 width=200>  
    <s:iterator value="#{'Friskit':'Boy','JessicaPark':'Girl','Fem':'Boy'}" status="status">  
        <tr <s:if test="#status.odd">style="background-color:#eeeeee"</s:if>>  
            <td><s:property value="%{#status.index+1}"/></td>  
            <td><s:property value="key"/></td>  
            <td><s:property value="value"/></td>  
        </tr>  
    </s:iterator>  
</table>  

注:若Iterator设置了status标签值,则每次迭代时都会创建一个IteratorStatus对象,IteratorStatus类包含了一下方法(getter属性):

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

Friskit

继续阅读此作者的更多文章