第六章:通用标签:深入浅出struts2

第六章 通用标签

数据标签有:a , i18n ,text , action, include, url, bean, param , property, date, push, debug, set

控制标签有:if ,apppend , merge,elseif,  generator, sort, else, iterator, subset

6.1 property标签

用来输出一个动作属性的值,属性有:

default: string类型,value属性没有时给出的默认值。 

escape:boolean, 默认为true, 是否要对HTML特殊字符进行转义(&:&amp;     ": &quot;    <:&lt;     >:&rt;)

value:将要显示的值

6.2 a 标签

呈现一个html超链接,如:

<s:a href="www..."  />

6.3 action标签

用来执行一个动作和该动作的结果,还会把该动作压入value stack栈的context map子栈,属性有

executeResult: 是否执行/呈现该动作的结果,默认为false

flush:是否在动作结束后对写缓冲区进行冲洗,默认为true

ignoreContextParams:是否在触发该动作时把请求参数也包括进来

name(必须的):触发的动作的名字,不需要要.action后缀

var: 压入context map栈的动作对象的变量

namespace:将要触发动作的命名空间

如: <s: action  name="myAction" namespace="123" executeResult="false"  />

6.4 param 标签

用来传递参数,属性有

name:参数的名称

value:参数的值,不管有没有用%{},该值都将计算,如果要赋值为string,则用单引号括起来

两种方法:<s: param name="var" value="1" /> , <s: param name="var" value=" '123' "  />

                  <s: param name="var">1</s:param>此种还可用来传递一个EL表达式,如<s:param name="host">${header.host}</s:param>

6.5 bean标签

用来创建一个javaBean,并将其压入context map栈中,两个属性

name:要创建的bean的完整类名

var:相当于id,压入context map的时,需要再引用时的名称

如<s: bean name="appo3a.customer" var="customer">

         <s: param name="name" value="ttt" />

    </s:bean>

     <s: property value="#customer.id" />

意思是显示ttt的id

6.6  date标签

日期标签,以何种方式显示日期,属性有:

format :以何种格式

name:将被排版的日期值

nice:是否进行高级排版

var:压入value stack栈里的变量名称

如:<s: bean name="java.util.Date"   var="today"  />

       <s: date name="#today" format="M/dd/yyyy"  var="date"/>

       today:<s: property value="#date" >

将显示:today: 8/24/2011

6.7 include标签

用来将一个servlet/jsp页面输出包括到当前页面上来,只有一个value属性,为将被包括的servlet/jsp的名字

6.8 set 标签

用来在以下Map对象里创建一个值/键对

value stack栈里context stack子栈

Map 类型的session对象(当前会话)

Map request(当前请求)

Map application(当前应用程序)

Map page(当前页面)

三个属性:name:将被创建属性的健

                  value:该键引用的对象

                  scope:目标对象的作用范围,可为application, session,request,page,default

如,session里有一customer对象,里面有属性name,telephone,要想显示其name,telephone,可用:

<s: property value="#session.customer.name" />

<s: property value="#session.customer.telephone" />

运用set标签,可改为

<s:set name="customer" value="#session.customer" />

<s: property value="#customer.name" />

<s: property value="#customer.telephone" />

6.9 push标签

与set标签相似,只是它将对象压入value stack栈,而不是context map栈,此外,操作完成后,会将对象弹出,因此在此过程中的操作需要在push标签里完成

属性:value:将被压入value stack 栈的值

如:<s: push value="#session.customer">

       <s: property value="name" />

       <s: property value="telephone" />

      </s: push>

6.10 URL 标签

用来动态创建一个URL,主要属性有:

action:所指向的动作

escapeAmp:是否对&字符进行转义,默认为true

includeContext:是否把当前的上下文包含进来

method:该动作的方法

namespace:命名空间

6.11 if else elseif标签

类似于JAVA里面的if,else,elseif关键字,必须有test 属性,即为测试条件,如

<s: if test="name==null" />

6.12 inerator 标签

用来遍历一个数组,一个collection或者一个Map 并把这个可遍历对象里的每一个元素依次压入和弹出value stack栈,属性有:

value:将被遍历的可遍历对象

status:  org.apache.structs2.views.jsp.IteratorStatus,其值见如下表格

var:用来引用这个可遍历对象中的当前元素的变量:

status
名字类型说明
indexinteger各次遍历的下标值(从0开始)
countinteger当前遍历的下标值或“index+1”
firstboolean如果当前元素是可遍历对象的第一个元素,则为true
lastboolean如果当前元素是可遍历对象的最后一个元素,则为true
evenboolean如果count属性的值为一个偶数,则为true
oddboolean如果count属性的值为一个奇数,则为true
modulusint该属性需要一个输入参数,它的返回值是count属性值除以输入参数的余数

如:<s:iterator value="{1,2,3,4}">

            <li><s:property /></li>

       </s:iterator> 

再如:<s:set name="car" value="{ '1','2','3' } " />

          <s: iterator value="#car " status="status">

               <s:property /><s:if test=="!#status.last">,</s:if>

          </s:iterator>

 6.13 append标签

即将两个列表里的内容连在一起,一个接着一个,,追加的意思,有一个属性var,用来引用新合并的可遍历对象的变量

如:<s:set var="list1" value=" {'1', '2' , '3' } "/>

       <s:set var="list2" value="{'one','two' }" />

       <s: append var="list">

            <s:param value="#list1" />

           <s:param value="#list2" />

       </s:append>

       <s:iterator value="#list">

            <s:property />,

        </s:iterator>

输出结果为:1,2,3,one,two,

6.14 merge标签

同append,所不同的是,输出的时候,交替输出,如上例,若用merge 标签,则会输出1,one,2,two,3, 也有一个var 属性。

6.15  generator标签

用来生成一个可遍历对象,压入value stack栈,所要做的操作必须在开始标签和结束标签之间完成,属性有:

名字类型说明
converterConverter转换器
countInteger可遍历对象能容纳的元素个数
seperator(必须)String各元素之间的分隔符
val(必须)String可遍历对象中的各个元素的来源
varString用来引用可遍历对象的变量

如:<s:generator converter="myConverter"  val="{'one','two','three'}"  seperator=",">

           <ul>

              <s:iterator>

                  <li> <s:property /> </li>

              </s:iterator>

           </ul>

         </s:generator>

其中,myConverter是一个转换器,在相应的action里面定义,用来将字母换成大写。

6.16  sort标签

用来排序,其属性有:

名字类型 说明
comparator(必须)jaa.util.Comparator排序中使用的比较器
sourceString将要进行排序的可遍历对象来源
varString用来引用因排序而新生成的可遍历对象的变量

如:<s: sort comparator="myComparator" source="{'one','two','three' }" >

            <s:iterator  >

                  <s:property />

            </s:iterator>

           </s:sort>

6.17 subset标签

用来生成可遍历对象的子集,属性有:

名字类型说明
deciderDecider决定什么样的元素能够入子集
countInteger决定子集里元素个数
sourceString可遍历对象的来源
startInteger从这个开始下标可以新建子集
varString引用新建子集的可遍历对象的变量

 

     

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值