您的位置:首页 > 编程语言 > Java开发

Struts2-控制标签

2016-04-16 21:15 393 查看
首先说明一点:使用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>


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: