10.3控制标签
10.3.1
10.3.2
10.3.3
10.3.4
generator标签
使用generator
标签可以将指定字符串按指定分隔符分成多个子串,临时生成的多个子串可以使用iterator标签来迭代输出。可以这样理解:generator将一个字符串转化成一个集合。在该标签的标签体内,整个临时生成的集合将位于ValueStack的顶端,蛋一旦该标签结束,该集合将被移出ValueStack
generator
标签的属性:
1,count
:可选属性,该属性指定生成集合中元素的总数。
2,separator
:必填属性,指定用于解析字符串的分隔符。
3,val
:必填属性,指定被解析的字符串。
4,converter
:可选属性,指定一个转换器,该转换器负责将集合汇总的每个字符串转换成对象
5,id
:可选属性,如果指定了该属性,则将生成的集合放在pageContext属性中
代码示例
<!--
使用s:generator标签将一个字符串解析成集合-->
<s:generator
val = "
'Spring2.0宝典,轻量级J2EE企业应用实战,基于J2EE的Ajax宝典' "
separator = ",">
<!--
在generator标签内,该集合位于valuestack的栈顶,故此处迭代就是临时生成的集合-->
<s: iterator
status = "st ">
<!--
根据当前迭代项索引的奇偶来决定是否使用CSS样式-->
< tr <s:if
test="#st.odd"
>
style
="background-color:#bbbbbb"</s:if>
>
<td><s:property/></td>
</tr>
</s:iterator>
</s:generator>
下面代码使用generator标签,使用了count和id属性,如果指定了count属性,意味着集合中最多只能包含count个元素(就是前count个元素),指定了id属性,就可以将临时生成的集合放置到pageContext属性中。代码如下:
<s:generator
val = "
'Spring2.0宝典,轻量级J2EE企业应用实战,基于J2EE的Ajax宝典' "
separator = ","
id="bookes" count="2"/>
<%
java.util.Iterator i = (java.util.Iterator)pageContext.getAttribute("books")
;
while( i.hasNext() ) {
String s = (String) i.next();
%>
<tr><td><%=s%></td></tr>
<%}
%>
10.3.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标签的使用示例大致相同。
10.3.6
subset标签
subset
标签用于取得集合的子集,该标签的底层通过org.apache.Struts2.util.Subset.IteratorFilter类提供实现。
使用subset
标签有如下几个属性:
1,count
:可选,该属性指定了子集中元素的个数。默认是取得所有源集合的全部元素。
2,source
:可选,指定源集合。默认取得valuestack栈顶的集合
3,start
:可选,该属性指定了子集从源集合的第几个元素开始截取。默认从第一个元素,即从0开始截取。
4,decider
:可选,指定开发者自己决定是否选中该元素
-----------------------------------------------------------------------------------------------------------------------------------------------------------
!!注意:在subset标签内时,subset标签生成的子集放在valuestack的栈顶,该标签结束,生成的子集被移出valuestack栈。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
下面代码使用subset标签截取了源集合形成子集
<table
border="1" width="200">
<!--
使用subset标签截取目标集合的三个元素,从第一个开始-->
<s:subset
source=
"{'java培训基地', 'Spring2.0宝典', '轻量级J2EE企业应用实战', '基于J2EE的Ajax宝典',
'webwork实战' }"
start=“1” count=“3” >
<!--使用iterator标签来迭代目标集合,因为没有指定vlaue属性值,故迭代valuestack栈顶的元素-->
<s:iterator
status="st">
<!--根据当前迭代元素的索引是否为奇数,决定是否使用CSS样式-->
< tr <s:if
test="#st.odd"
>
style
="background-color:#bbbbbb"</s:if>
>
<td><s:property/></td>
</tr>
<s:iterator>
<s:subset>
</table>
除此之外,如果开发者需要实现自己的街区标准,则需要实现一个Decider
类,该类需要实现SubsetIteratorFilter.Decider接口。实现该类时,需要实现一个boolean
decide(Object element)方法,如果返回时真,表明该元素被选入子集中。看下面的Decider类代码:
public class MyDecider
implements
SubsetIteratorFilter.Decider
{
public boolean
decide(Objecit){
String str =
(String)element;
//如果集合元素(字符串)中包含J2EE子串,即可被选入子集
return str.indexOf("J2EE") >
0 ;
}
}
下面看看如何在JSP使用Decider实例来过滤集合
<!--定义一个Decider实例-->
<s:bean
id="mydecider" name="lee.MyDecider">
<table
border="1" width="200">
<!--使用自定义的Decider实例来截取目标集合-->
<table
border="1" width="200">
<s:subset
source=
"{'java培训基地', 'Spring2.0宝典', '轻量级J2EE企业应用实战', '基于J2EE的Ajax宝典',
'webwork实战' }"
decider = “#mydecider”>
<s:iterator
status="st">
<!--根据当前迭代元素的索引是否为奇数,决定是否使用CSS样式-->
< tr <s:if
test="#st.odd"
>
style
="background-color:#bbbbbb"</s:if>
>
<td><s:property/>
</td>
</tr>
<s:iterator>
<s:subset>
</table>
10.3.7
sort标签
sort
标签对于指定的集合元素进行排序,排序时,必须提供自己的排序规则,即实现自己的Comparator,自己的Comparator需要实现java.util.Comparator接口。
使用sort
标签时可指定如下几个属性:
1,comparator
:必填属性,指定进行排序的Comparator实例。
2,source
:可选属性,指定被排序的集合。默认对valuestack栈顶的集合进行排序。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
!!注意:在sort
标签内时,sort标签生成的子集放在valuestack的栈顶,该标签结束,生成的子集被移出valuestack栈。
---------------------------------------------------------------------------------------------------------------------------------------------------------
下面是本实例应用中的Comparator类的代码:
public
class MyComparator implements Comparator
{ //决定两个元素大小的方法
public
int compare (Object element1 , Object element2 )
{
return ((String)element1).length() - ((String)element2).length();
}
}
分享到:
相关推荐
Struts2 标签库(IBM资料)Struts2标签库概述; Struts2数据标签; Struts2控制标签; Struts2表单标签; Struts2非表单标签
5.3 Struts2控制标签简介 79 5.3.1 append标签使用介绍 79 5.3.2 generator标签使用介绍 80 5.3.3 if、else、elseif标签使用介绍 81 5.3.4 iterator标签使用介绍 82 5.3.5 merge标签使用介绍 83 5.3.6 sort标签使用...
Java EE 轻量级解决方案 — SSH 青岛东合信息技术有限公司 青岛海尔软件公司 著 教材源码 _ 第四章 Struts2标签库
Struts2标签库的组成 Struts2框架的标签库可以分为以下三类: ... ... 非表单标签:主要用于生成页面上的tree,Tab页等。...流程控制标签:主要包含用于实现分支,循环等流程控制的标签。 AJAX标签:用于支持Ajax效果
Struts2_控制标签与数据标签.pdf
用struts2 doubleselect标签实现的二级联动下拉菜单
一、逻辑控制标签 用于进行逻辑控制输出。主要分以下几类: 1)条件标签:用于执行基本的条件流转 <s:if>:拥有一个test属性,其表达式的值用来决定标签里内容是否显示。欢迎hzd <s:elseif>:同上。 …… …… 很...
struts2 标签库使用说明.Struts2中通用标签可以分为二类:控制标签和数据标签。控制标签用于呈现页面时控制执行流程,数据标签用于访问值栈中的数据。
3.2 struts 2控制标签详解 105 3.2.1 if/elseif/else标签详解 105 3.2.2 iterator标签详解 106 3.2.3 append标签详解 108 3.2.4 generator标签详解 110 3.2.5 merge标签详解 112 3.2.6 subset标签详解 113 ...
非界面标签又分为数据访问标签和流程控制标签。 控制标签: if/elseif/else标签:控制流程分支。 iteratot标签:对集合属性迭代(属性类型:List、Map、数组)。 append标签:将多个集合对象拼接在一起,组成...
在早期的WEB开发中,JSP视图控制和显示技术主要依靠Java脚本来实现,这样一来,JSP页面重新嵌入了大量的Java脚本代码,给...Struts2标签库相对struts1.x进行了巨大的改进,支持OGNL表达式,不再依赖任何表现层技术。
这是一个对struts一个标签(html:select)的操作,主要为了操作下拉列表控制的数据读取,适合于初学者。。
非UI标签可分为流程控制标签(包括用于实现分支、循环等流程控制的标签)和数据访问标签(主要包括用户输出ValueStack中的值,完成国际化等功能的) (3)ajax标签 3.Struts2标签使用前的准备: (1)在要使用标签...
6.4 控制标签 124 6.4.1 iterator标签 124 6.4.2 if和else标签 125 6.5 其他标签 126 6.5.1 include标签 126 6.5.2 URL标签 127 6.5.3 i18n和text标签 128 6.5.4 param标签 129 6.6 使用JSTL和其他本地标签 130 6.7 ...
— Web 应用的发展 — Model 1 和Model 2 — MVC 思想 — MVC 模式的优势 — 常用MVC 框架及其特征 — Struts 1 的...Struts 2 的标签库 — Struts 2 的控制器组件 — Struts 1 和Struts 2 的对比
第1章 Struts 2概述1 1.1 MVC思想概述2 1.1.1 Web技术的发展2 1.1.2 Model 1和Model 24 ... 1.3.4 Struts 2的控制器组件19 1.4 Struts 2与Struts 1的对比20 1.5 WebWork和Struts 2对比21 1.6 本章小结22
struts2的介绍,struts框架结构、控制器组件、标签库以及详细的配置文件描述
本章要点 — Web应用的发展 — Model 1和Model 2 — MVC思想 — MVC模式的优势 — 常用MVC框架及其特征 ...— Struts 1的基本结构...— Struts 2的控制器组件 — Struts 1和Struts 2的对比 .......................
十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例。 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图...