首先说明一点:使用Struts2标签首先应该在jsp代码中加入<%@taglib prefix="s" uri="/struts-tags" %>否则无法使用Struts2标签。
一:if/else if/else标签:
代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@taglib prefix="s" uri="/struts-tags" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <s:set name="age" value="29"></s:set> <s:if test="#age>60"> 老年人 </s:if> <s:elseif test="#age>35"> 中年 </s:elseif> <s:else> 青年 </s:else> </body> </html><s:if>以及<s:elseif>标签中会加入 test属性,通过此属性判断ture或者 false。
二:iterator标签
代码如下:
<table border="1" witth="300"> <s:iterator value="{'mao','ge','VipMao'}" id="name" status="st"> <tr <s:if test="#st.odd">style="background-color:red"</s:if>> <td><s:property value="name"/></td> </tr> </s:iterator> </table> <table border="1" width="300"> <tr> <td>姓名</td> <td>学号</td> </tr> <s:iterator value="#{'mao':'14','ge':'16','VipMao':'17'}" id="score" status="st"> <tr <s:if test="#st.odd"> style="background-color:yellow"</s:if>> <td><s:property value="key"/></td> <td><s:property value="value"/></td> </tr> </s:iterator> </table>
<s:iterator>为迭代标签,以上就对List和Map分别进行了迭代(Map需要通过#创建),迭代标签可以指定一下三个属性:
1:value:被迭代的集合,可选,如果不指定,则开始从ValueStack栈顶开始遍历
2:id:指定了集合里元素的ID。可选
3:status:可选,该属性指定了迭代时的Iterator实例,通过该实例可以判断迭代的元素是否为奇数,第一个等属性,如果指定了该属性,每次迭代都会有一个IteratorStatus实例,以status='st'为例,该实例包含常用方法如下:
(1):st.count()返回迭代了几个元素。
(2)st.index();返回迭代元素的索引。
(3)st.even()是否为偶数
(4)st.first()是否为第一个元素
(5)st.odd()是否为奇数
(6)st.last()是否为最后一个元素。
三:append标签
<table border="1" width="300"> <s:append var="newList1"> <s:param value="#{'马洪昌':'14','毛忠良':'16','李照':'17'}"/> <s:param value="#{'洪文':'18','贺南南'}"/> </s:append> <tr> <td>序号</td> <td>姓名</td> <td>学号</td> </tr> <s:iterator value="#newList1" id="it1" status="st1"> <tr <s:if test="#st1.odd">style="background-color:yellow"</s:if>> <td><s:property value="#st1.count"/></td> <td><s:property value="key"/> <td><s:property value="value"/></td> </tr> </s:iterator> </table>
四:generator标签:
五:merge标签:
与append标签不同,append标签为加载完一个集合后再凭借另一个,而merge是每个集合从第一个元素一起遍历。
六:subset
截取标签。
<table boder="1" width="300"> <s:subset source="{'mao','zhong','liang','zhu','lin'}" count="3" start="1"> <s:iterator id="it" status="st"> <tr <s:if test="#st.odd">style="background-color:yellow"</s:if>> <td><s:property value="#st.count"/></td> <td><s:property/></td> </tr> </s:iterator> </s:subset> </table>从第2个元素开始截取,截取长度为3,因为在<subset>标签内,生成的子集合在ValueStack栈顶,因此我们可以直接使用<s:property/> 不指定 value 从栈顶获取子集合。
七:sort
package com.mao; import java.util.Comparator; public class MyComparator implements Comparator{ @Override public int compare(Object a, Object b) { // TODO Auto-generated method stub return a.toString().length()-b.toString().length(); } }先定义排序规则
然后
<!-- 定义一个Comparator实例,实现类为 MyComparator,并且通过var将javabean放入StackContext中 --> <s:bean name="com.mao.MyComparator" var="mycomparator"/> <!-- 使用自定义排序规则对目标进行排序 --> <s:sort comparator="#mycomparator" source="{'mao','zhongz','liang','zhul','lin'}" var="sortList"/> 输出page范围内的sortList属性: ${pageScope.sortList} <table border="1" width="300" > <!-- 迭代page范围内的sortList属性 --> <s:iterator status="st" id="it" value="#attr.sortList"> <tr <s:if test="#st.odd">style="background-color:yellow"</s:if>> <td><s:property/></td> </tr> </s:iterator>> </table>