struts2 标签一

本文详细介绍了Struts2框架中的核心标签,包括条件判断标签if/elseif/else、迭代标签iterator、集合操作标签append和merge、字符串处理标签generator、子集获取标签subset以及排序标签sort。通过具体实例展示了这些标签的功能及用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一 . 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);
}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值