`

struts2控制标签

阅读更多

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 标签库(IBM资料)Struts2标签库概述; 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标签库

    Java EE 轻量级解决方案 — SSH 青岛东合信息技术有限公司 青岛海尔软件公司 著 教材源码 _ 第四章 Struts2标签库

    struts2 标签库使用文档

    Struts2标签库的组成 Struts2框架的标签库可以分为以下三类: ... ... 非表单标签:主要用于生成页面上的tree,Tab页等。...流程控制标签:主要包含用于实现分支,循环等流程控制的标签。 AJAX标签:用于支持Ajax效果

    Struts2 与数据标签

    Struts2_控制标签与数据标签.pdf

    struts2地市、县区二级联动下拉菜单 doubleselect标签

    用struts2 doubleselect标签实现的二级联动下拉菜单

    struts2的标签库

    一、逻辑控制标签 用于进行逻辑控制输出。主要分以下几类: 1)条件标签:用于执行基本的条件流转 &lt;s:if&gt;:拥有一个test属性,其表达式的值用来决定标签里内容是否显示。欢迎hzd &lt;s:elseif&gt;:同上。 …… …… 很...

    struts2标签库的综合应用

    struts2 标签库使用说明.Struts2中通用标签可以分为二类:控制标签和数据标签。控制标签用于呈现页面时控制执行流程,数据标签用于访问值栈中的数据。

    低清版 大型门户网站是这样炼成的.pdf

    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 ...

    struts2 标签库 帮助文档

    非界面标签又分为数据访问标签和流程控制标签。 控制标签: if/elseif/else标签:控制流程分支。 iteratot标签:对集合属性迭代(属性类型:List、Map、数组)。 append标签:将多个集合对象拼接在一起,组成...

    struts2标签库

    在早期的WEB开发中,JSP视图控制和显示技术主要依靠Java脚本来实现,这样一来,JSP页面重新嵌入了大量的Java脚本代码,给...Struts2标签库相对struts1.x进行了巨大的改进,支持OGNL表达式,不再依赖任何表现层技术。

    struts操作select标签实例

    这是一个对struts一个标签(html:select)的操作,主要为了操作下拉列表控制的数据读取,适合于初学者。。

    struts2 学习例子

    非UI标签可分为流程控制标签(包括用于实现分支、循环等流程控制的标签)和数据访问标签(主要包括用户输出ValueStack中的值,完成国际化等功能的) (3)ajax标签 3.Struts2标签使用前的准备: (1)在要使用标签...

    Struts2 in action中文版

    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 ...

    struts2-指南

    — Web 应用的发展 — Model 1 和Model 2 — MVC 思想 — MVC 模式的优势 — 常用MVC 框架及其特征 — Struts 1 的...Struts 2 的标签库 — Struts 2 的控制器组件 — Struts 1 和Struts 2 的对比

    Struts2权威指南

    第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 PPT 张冰

    struts2的介绍,struts框架结构、控制器组件、标签库以及详细的配置文件描述

    struts2教程.CHM文档

    本章要点 — Web应用的发展 — Model 1和Model 2 — MVC思想 — MVC模式的优势 — 常用MVC框架及其特征 ...— Struts 1的基本结构...— Struts 2的控制器组件 — Struts 1和Struts 2的对比 .......................

    Struts2入门教程(全新完整版)

    十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例。 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图...

Global site tag (gtag.js) - Google Analytics