struts2 标签初识 Control Tags

来源:互联网 发布:手机抽奖作弊软件 编辑:程序博客网 时间:2024/05/24 01:41

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标签负责将多个集合拼接成一个集合.

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

  1.    count :可选属性,该属性指定生成集合中元素的总数。
  2.   separator :必填属性,指定用于解析字符串的分隔符。
  3.    val:必填属性,指定被解析的字符串。
  4.  converter:可选属性,指定一个转换器,该转换器负责将集合汇总的每个字符串转换成对象
  5.    id:可选属性,如果指定了该属性,则将生成的集合放在pageContext属性中

4、iterator

status否 String如果设置此参数,一个IteratorStatus的实例将会压入每个遍历的堆栈value否 Object/String要遍历的可枚举的(iteratable)数据源,或者将放入新列表(List)的对象id否 Object/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标签时可指定如下几个属性:      

  1. comparator:必填属性,指定进行排序的Comparator实例。
  2. source:可选属性,指定被排序的集合。默认对valuestack栈顶的集合进行排序。
  3. 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标签可以指定的属性有:

  1.  count:    可选属性,指定子集中元素的个数.在不指定该属性情况下,默认取得源集合的全部元素   
  2.   
  3. source: 可选属性,指定源集合.若不指定,默认取得ValueStack栈顶的集合.   
  4.   
  5. start:可选属性,指定子集从源集合中的第几个元素开始截取.默认从第一个开始截取,默认值为0  
  6.   
  7. decider:可选属性,指定由开发者自己决定是否选中该元素.