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

struts2 标签初识 Control Tags

2010-07-28 14:54 120 查看
1、if 、elseif 和else用来改变结构

<s:if test="%{false}">
<div>Will Not Be Executed</div>
</s:if>
<s:elseif test="%{true}">
<div>Will Be Executed</div>
</s:elseif>
<s:else>
<div>Will Not Be Executed</div>
</s:else>

2、append
标签用于将多个集合对象拼接起来,组成一个新的集合,通过这种拼接,从而允许通过一个<s:iterator../>标签就完成多个集合的迭代.
使用<s:append../>标签需要指定一个id属性,该属性确定拼接生成的新集合名称.<s:append../>标签接受多个<s:param.../>子标签,每个子标签指定一个集合,append标签负责将多个集合拼接成一个集合.

<s:append var="myAppendIterator">
<s:param value="%{#request.names}" />
<s:param value="%{#request.names}" />
<s:param value="%{#request.names}" />
</s:append>
<s:iterator value="%{#myAppendIterator}">
<s:property />
</s:iterator>

3、generator

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
</head>

<body>
<h1>Struts 2 Generator tag example</h1>

1. Generator tag example.
<s:generator val="%{'java|.net|c|python|shell'}" separator="|">
<ol>
<s:iterator>
<li><s:property /></li>
</s:iterator>
</s:generator>
</ol>

2. Generator tag with converter example
<s:generator val="%{'java|.net|c|python|shell'}" separator="|"
converter="%{languageConverter}">
<ol>
<s:iterator>
<li><s:property /></li>
</s:iterator>
</s:generator>
</ol>

</body>
</html>

count :可选属性,该属性指定生成集合中元素的总数。

separator :必填属性,指定用于解析字符串的分隔符。

val:必填属性,指定被解析的字符串。

converter:可选属性,指定一个转换器,该转换器负责将集合汇总的每个字符串转换成对象

id:可选属性,如果指定了该属性,则将生成的集合放在pageContext属性中

4、iterator

statusString如果设置此参数,一个IteratorStatus的实例将会压入每个遍历的堆栈
valueObject/String要遍历的可枚举的(iteratable)数据源,或者将放入新列表(List)的对象
idObject/String用来标识元素的id。在UI和表单中为HTML的id属性
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
List list = new ArrayList();
list.add("Max");
list.add("Scott");
list.add("Jeffry");
list.add("Joe");
list.add("Kelvin");
request.setAttribute("names", list);
%>
<html>
<head>
<title>Iterator</title>
</head>
<body>
<h3>Names: </h3>
<!--
1、此处的空property元素用于获得当前iterator的值
2、status被设成stuts,在iterator的里面就可以通过#stuts取得IteratorStatus的对象。IteratorStatus类包含当前序号信息,如是否第一个或最后一个,是否为奇数序号。这些信息在我们做格式化的时候,显得非常有用。
-->
<ol>
<s:iterator value="#request.names" status="stuts">
<s:if test="#stuts.odd == true">
<li>White <s:property /></li>
</s:if>
<s:else>
<li style="background-color:gray"><s:property /></li>
</s:else>
</s:iterator>
</ol>
</body>
</html>

http://blog.sina.com.cn/s/blog_3e3779c10100c0yj.html

1:#status.odd 是否奇数行

2:#status.count 当前行数

3:#status.index 当前行的序号,从0开始『#status.count=#status.index+1』

4:#status.first 是否第一行

5:#status.last 是否最后一行

6:#status.modules(int) 当前行数取模

5、merge

merge 标签的用法看起来非常像append标签,也是用于将多个集合拼接成一个集合,但是与append有区别。
如果采用append方式拼接,新集合的元素顺序为:
(1)第一集合的第1个元素
(2)第一集合的第2个元素
(3)第一集合的第3个元素
(4)第二集合的第1个元素
(5)第二集合的第2个元素
(6)第二集合的第3个元素
(7)第三集合的第1个元素
(8)第三集合的第2个元素
(9)第三集合的第3个元素
如果采用merge 方式拼接,新集合的元素顺序为:
(1)第一集合的第1个元素
(2)第二集合的第1个元素
(3)第三集合的第1个元素
(4)第一集合的第2个元素
(5)第二集合的第2个元素
(6)第三集合的第2个元素
(7)第一集合的第3个元素
(8)第二集合的第3个元素
(9)第三集合的第3个元素
merge标签的使用,与使用append标签的使用示例大致相同

http://younglibin.javaeye.com/blog/459077

<s:merge var="myAppendIterator">
<s:param value="%{#request.names}" />
<s:param value="%{#request.names}" />
<s:param value="%{#request.names}" />
</s:merge>
<s:iterator value="%{#myAppendIterator}">
<s:property />
</s:iterator>

6、sort

sort标签
sort标签对于指定的集合元素进行排序,排序时,必须提供自己的排序规则,即实现自己的Comparator,自己的Comparator需要实现java.util.Comparator接口。
使用sort标签时可指定如下几个属性:

comparator:必填属性,指定进行排序的Comparator实例。

source:可选属性,指定被排序的集合。默认对valuestack栈顶的集合进行排序。

var: 可选,如果指定了改属性,则生成Iterator对象设置成page范围的属性,该属性可以换成ID ,但推荐使用var属性;改属性的作用与subset标签中var属性作用不同!

7、subset

<s:subset source="%{#request.names}" start="1" count="3">
<s:iterator>
<s:property/>
</s:iterator>
</s:subset>

subset标签用于去得集合的子集,该标签的底层通过org.apache.struts2.util.Subset.IteratorFilter类提供实现.

使用subset标签可以指定的属性有:

count: 可选属性,指定子集中元素的个数.在不指定该属性情况下,默认取得源集合的全部元素

source: 可选属性,指定源集合.若不指定,默认取得ValueStack栈顶的集合.

start:可选属性,指定子集从源集合中的第几个元素开始截取.默认从第一个开始截取,默认值为0

decider:可选属性,指定由开发者自己决定是否选中该元素.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: