首先说明一点:使用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>
通过<s:append>标签内的<s:param value="">标签添加属性。
四: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>