`

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 自定义标签

    在Struts2中,自定义标签通常由Action类和结果页面共同完成,提供了一种声明式编程的方式,降低了视图与控制层的耦合度。 二、自定义标签的优点 1. 提高代码可读性:自定义标签将复杂的业务逻辑封装起来,使得HTML...

    struts2标签库例子

    这些标签可以分为控制标签、数据标签和其他标签。 控制标签用来控制程序的执行,例如 if、else 和 iterator。数据标签用来管理数据的取得和创建,例如 bean、push 和 i18n。 4.1.1 if 标签 if 标签用来控制基本的...

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

    2. **Struts2标签的类型**:包括控制标签(如`&lt;s:if&gt;`、`&lt;s:iterator&gt;`)、数据标签(如`&lt;s:property&gt;`)、表单标签(如`&lt;s:form&gt;`、`&lt;s:textarea&gt;`)以及国际化标签(如`&lt;s:text&gt;`)等。 3. **标签的生命周期**:...

    struts2标签使用例子

    Struts2是一个强大的MVC(模型-视图-控制器)框架,用于构建企业级Java Web应用程序。在Struts2框架中,标签库是其一大特色,它提供了丰富的自定义标签,使得开发者能够更加便捷地创建动态页面。这些标签极大地简化...

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    - **Struts2控制标签**: - 控制标签包括`append`、`generator`、`if/else/elseif`、`iterator`、`merge`、`sort`等。 - 这些标签主要用于控制页面内容的生成,帮助开发者实现更复杂的逻辑处理。 - 例如,`if`...

    Struts2自定义标签

    Struts2作为一款流行的Java Web框架,极大地简化了MVC(模型-视图-控制器)应用的开发。自定义标签是Struts2框架中的一个重要特性,它允许开发者创建自己的标签库,以更直观、易读的方式在JSP页面中处理业务逻辑。...

    struts2的标签应用

    在实际开发中,Struts2的标签使得视图层的代码更加简洁易读,降低了视图和控制层之间的耦合度。它们提供了丰富的内置功能,如数据转换、国际化支持、错误处理等,使得开发者可以更专注于业务逻辑,而不是繁琐的HTML...

    struts标签 struts标签 struts标签

    Struts标签库提供了一组预定义的JSP标签,这些标签有助于开发者更有效地处理常见的Web开发任务,如表单处理、数据展示、逻辑控制等。在本文中,我们将深入探讨其中的Bean Tags、HTML Tags和Logic Tags。 1. **Bean ...

    struts2标签库struts2标签库struts2标签库

    "Struts2标签库详解" Struts2标签库是Struts2框架中的一个重要组件,它提供了一系列的标签,帮助开发者快速构建Web应用程序。在Struts2标签库中,标签可以分为UI标签和非UI标签两大类。UI标签用于生成HTML控件,如...

    Struts2表单标签使用范例

    Struts2是一个强大的Java web应用程序框架,它极大地简化了MVC(模型-视图-控制器)架构的应用开发。在Struts2中,表单标签是用于处理用户输入和展示数据的关键组件,它们使得视图层的构建更加简洁和高效。本示例将...

    struts2常用标签详解

    3. **Logic标签**:虽然Struts2已经不推荐使用这些标签,但在老版本中它们用于控制流程。例如: - `&lt;s:if&gt;`和 `&lt;s:else&gt;`:条件判断,类似于Java中的if-else语句。 - `&lt;s:iterate&gt;`:遍历集合,类似于Java的for-...

    Struts标签库 Struts 标签库

    - **控制标签**:如`s:if`、`s:else`、`s:iterator`,用于条件判断和循环。 - **动作标签**:如`s:action`、`s:url`,用于执行Action并生成相应的URL。 - **表单标签**:如`s:textfield`、`s:checkbox`、`s:radio...

    struts2的详细资料

    文件名“struts2_05_03_controlTag”可能涵盖了Struts2控制标签的使用,这些标签包括导航和流程控制标签,如 `&lt;s:if&gt;`, `&lt;s:else&gt;`, `&lt;s:switch&gt;`, `&lt;s:iterator&gt;`等,它们帮助开发者根据条件执行不同的操作或循环...

    Struts2 标签库(IBM资料

    Struts2 标签库(IBM资料)Struts2标签库概述; Struts2数据标签; Struts2控制标签; Struts2表单标签; Struts2非表单标签

    Struts2实例 国际化 类型转换 struts标签

    Struts2是一个强大的MVC(模型-视图-控制器)框架,被广泛应用于Java Web开发。这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查...

    Struts2标签集锦(附Struts2标签详解word文档)

    在Struts2框架中,标签库是一系列预定义的JSP标签,它们提供了丰富的功能,如数据绑定、控制流、输入验证等,帮助开发者创建更加整洁、易于维护的代码。 Struts2标签库主要分为以下几个部分: 1. **核心标签(Core...

    Struts2标签使用及API文档

    - **控制标签**:如`s:if`, `s:else`, `s:choose`等,用于条件判断和流程控制。 - **数据展示标签**:如`s:textfield`, `s:textarea`, `s:checkbox`, `s:radio`等,用于创建表单元素并绑定到Action的属性。 - **...

    struts2标签使用方法

    流程控制标签用于实现分支、循环等流程控制的标签,而数据访问标签用于输出 ValueStack 中的值,完成国际化等功能的。 Ajax 标签 Ajax 标签用于实现异步请求和处理的标签。Ajax 标签可以实现页面无刷新更新、实时...

Global site tag (gtag.js) - Google Analytics