一 . if/elseif/else
<s:if test="逻辑表达式">
标签体
<s:if>
<s:elseif test="逻辑表达式">
标签体
</s:elseif>
<s:else>
标签体
</s:else>
test 用于存放进行条件判断的逻辑表达式,在test属性中常用OGNL表达式进行逻辑运算,只有逻辑表达式为真时,相应的标签体才会被 执行
二 . iterator
<s:iterator value="集合对象" id="每次迭代的引用" status="迭代状态实例">
标签体
</s:iterator>
status中的方法
int getCount() 取得共迭代输出过得元素个数
int getIndex() 返回当前迭代的索引号,索引号从0开始
boolean isEven() 当前索引号是否为偶数
boolean isOdd() 当前索引号是否为奇数
boolean isFirst() 判断当前元素是否为第一个元素
boolean isLast() 判断是否为最后一个元素
实例
1. 入口
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!-- struts2的标签 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>标签页面
</title>
</head>
<body>
<br>
<br>
<br>
<div align="center">
<s:a href="iterator.action">iterator标签</s:a>
</div>
</body>
</html>
2 ,struts2配置
<action name="iterator" class="com.xiu.tld.test.IteratorAction"
method="iterator">
<result name="success">/iterator.jsp</result>
</action>
3 ,Action类
package com.xiu.tld.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.opensymphony.xwork2.ActionSupport;
public class IteratorAction extends ActionSupport {
private List resultList;
private Set set;
private Map map;
public List getResultList() {
return resultList;
}
public Set getSet() {
return set;
}
public void setSet(Set set) {
this.set = set;
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
public void setResultList(List resultList) {
this.resultList = resultList;
}
public String iterator() {
resultList = new ArrayList();
set = new HashSet();
map = new HashMap();
for (int i = 0; i < 10; i++) {
resultList.add("这是list中的第" + i + "个元素");
}
for (int i = 0; i < 10; i++) {
set.add("这是set中的第" + i + "个元素");
}
for (int i = 0; i < 10; i++) {
map.put("key=" + i, "value=" + i);
}
return "success";
}
}
4. iterator.jsp 页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!-- struts2的标签 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>iterator标签</title>
</head>
<body>
<h1>
iterator标签测试 有序的
</h1>
<s:iterator value="resultList" id="row" status="st">
<s:property value="#st.count" />,<s:property value="row" /><br>
<s:if test="#st.odd">(奇数)</s:if>
<s:else>(偶数)</s:else>
</s:iterator>
<hr>
<h1>
iterator标签测试 无序的
</h1>
<s:iterator value="set" id="row" status="st">
<s:property value="#st.count"/>,<s:property value="row" /><br>
</s:iterator>
<hr>
<h1>
iterator标签测试 map的值
</h1>
<s:iterator value="map" id="row" status="st">
<s:property value="#st.count"/>,key=<s:property value="key"/>
value=<s:property value="value"/><br>
</s:iterator>
</body>
</html>
三, append标签与megre
他们的区别在于 append是集合在后面添加, merge是随意添加
1 . append用于 将多个集合对象拼接起来
<s:append id="拼合后得到的新的集合对象名字">
<s:param value="需要拼接的集合对象"/>
</s:append>
实例如下
<h1>
append标签测试
</h1>
<s:append id="newList">
<s:param value="resultList"></s:param> resultList来自上面的实例
<s:param value="{'1对象','2对象','3对象'}"></s:param>
</s:append>
<s:iterator value="#newList" id="row">
<s:property value="row" />
</s:iterator>
2. merge
<h1>
merge标签测试
</h1>
<s:merge id="newList2">
<s:param value="resultList"></s:param>
<s:param value="{'1对象','2对象','3对象'}"></s:param>
</s:merge>
<s:iterator value="#newList2" id="row">
<s:property value="row" />
</s:iterator>
四, generator 标签
该标签可指定的字符串按照指定的分隔符折分字符串集合,并存放于valueStack栈定,供iterator标签输出,如果指定了id属性,则折分后的字符串集合存放到pageContext属性中。
<s:generator separtor="分隔符" val=“待分隔符的字符串” id=“存入pageContext中的属性名” count="集合中元素的总数" >
....
</s:generator>
count表示生成的集合中最多只能能包含count个元素, converter指定转换器将集合中的每个字符串转换为对象
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!-- struts2的标签 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>generator标签页面</title>
</head>
<body>
<br>
<br>
<br>
<div align="center">
<h1>
使用generator标签分割字符串
</h1>
<s:generator separator="," val="'中国,美国,英国'">
<s:iterator status="st">
<s:property value="#st.count" />,<s:property />
<br>
</s:iterator>
</s:generator>
</div>
<br>
<br>
<br>
<div align="center">
<h1>
使用generator标签分割字符串,将集合存放到pageContext中
</h1>
<s:generator separator="," val="'中国,美国,英国'" id="love" count="3">
</s:generator>
<%
Iterator it = (Iterator)pageContext.getAttribute("love");
int i=1;
while(it.hasNext()){
out.println((i++)+","+it.next()+"<br>");
}
%>
</div>
</body>
</html>
五, subset标签
该标签用于截取源集合的一个子集置于valueStack栈顶,共iterator标签迭代输出,如果指定了id属性,则将子集合存放到pageContext属性中。
<s:subset source="源集合" count="子集合元素个数" start="起始位置" decider="筛选器对象" id="pageContext">
</s:subset>
实例如下;
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!-- struts2的标签 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>subset标签页面</title>
</head>
<body>
<br>
<br>
subset标签测试
<br>
<h1>
用法一,使用subset截取子集
</h1>
<s:subset source="{'abc','abdfdaa','dsafads','asdfafasdfdsaf'}"
count="5" start="0">
<s:iterator status="st">
<s:property value="#st.count" />,<s:property />
<br>
</s:iterator>
</s:subset>
<br>
<br>
<hr>
<h1>
用法二,使用subset标签与decider实例截取子集
</h1>
<s:bean id="mydecider" name="com.xiu.tld.test.MyDecider"></s:bean>
<s:subset source="{'abc','abdfdaa','dsafads','asdfafasdfdsaf'}" decider="mydecider">
<s:iterator status="st">
<s:property value="#st.count" />,<s:property />
<br>
</s:iterator>
</s:subset>
<br>
<br>
<hr>
</body>
</html>
MyDecider.java 类
package com.xiu.tld.test;
import org.apache.struts2.util.SubsetIteratorFilter.Decider;
/**
* 筛选器
*
* @author Administrator
*
*/
public class MyDecider implements Decider {
public boolean decide(Object arg0) throws Exception {
String element = (String) arg0;
return element.length() >= 5;
}
}
六, sort标签
该标签用于将源集合按指定的排序规则排序后置于valuestack栈定,共iterator迭代输出
<s:sort comparator="比较器实例" source="源集合" id="pageContext">
....
</s:sort>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!-- struts2的标签 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>subset标签页面</title>
</head>
<body>
<br>
<br>
subset标签测试
<br>
<h1>
用法一,使用sort标签与compartator实例截取子集
</h1>
<s:bean id="mycompartator" name="com.xiu.tld.test.MyComparator"></s:bean>
<s:sort comparator="mycompartator" source="{'cbc','ade','ff'}">
<s:iterator status="st">
<s:property value="#st.count" />,<s:property />
<br>
</s:iterator>
</s:sort>
<br>
<br>
<hr>
</body>
</html>
MyComparator.java 类
package com.xiu.tld.test;
import java.util.Comparator;
public class MyComparator implements Comparator {
// 实现单词的第一个字母的顺序
public int compare(Object arg0, Object arg1) {
String element1 = (String) arg0;
String element2 = (String) arg1;
return element1.charAt(0) - element2.charAt(0);
}
}