Struts2标签(二)

来源:互联网 发布:手机偷菜软件 编辑:程序博客网 时间:2024/04/29 08:25

Struts2标签分类

1.分类:

        Struts2标签库:用户界面标签库(表单/非表单标签库),非用户界面标签库(控制标签库,数据访问标签库),ajax支持标签库


(1)控制标签:(if,elseif,else,iterator,append,merge,generator,subset,sort);

(2)数据标签:(bean, param,date, debug, include, set, url, push) 

  2.导入taglib

<%@taglib prefix=“s”uri=“/struts-tags” %>

OGNL是标签的基础,要理解OGNL的基本使用,在struts2中,OGNL必须和标签紧密配合

控制标签包含一组条件判断标签和一组集合遍历和操作标签

数据标签包含一组数据访问相关的标签


控制标签

1、条件标签 if...elseif...else         属性:test:测试条件

eg:

<%! Random rnd = newRandom(); %>

 <% int n = rnd.nextInt(200);pageContext.setAttribute("n", n); %>

 <s:if test="#attr.n % 7 == 0">恭喜,您中了一等奖! </s:if>

 <s:elseif test="#attr.n % 5 ==0">恭喜,您中了二等奖! </s:elseif>

 <s:else> 欢迎惠顾!</s:else>

2、迭代标签 iterator:用于循环数组,集合和Map

属性有:value:数组,集合和Map  ;var:当前元素;status:当前元素的状态index,count,even,odd,first,last

eg:

    <h3>迭代/遍历数组/集合中的元素</h3>
    <s:set var="list2" value="{'张飞','小乔','关羽'}"></s:set>
    <s:property value="#list2"/>
    <s:if test="#list2!=null&&#list2.size()>0">
     <ul>
      <s:iterator value="#list2" var="user">
        <li>
           <s:property value="#user"/>或${user}
        </li>
      </s:iterator>
     </ul>
    </s:if>
    
    <h3>对map迭代</h3>
    <s:set var="map2" value="#{1:'v1','k2':'v2','k3':3}"></s:set>
    <s:property value="#map2"></s:property>
    <s:property value="#map2.values"></s:property>
    <s:if test="#map2!=null&&#map2.size>0">
        <ul>
            <s:iterator value="#map2" var="mapEntry">
               <li>
                  <s:property value="#mapEntry.key"></s:property>
                  <s:property value="#mapEntry.value"/>
               </li>
            </s:iterator>
        </ul>
    </s:if>
    <h3>迭代数组对象,用表格表现出来</h3>
    <s:set var="users" value="{
       new com.web.vo.UserVo('wen1','101'),
       new com.web.vo.UserVo('wen2','102'),
       new com.web.vo.UserVo('wen3','103'),
       new com.web.vo.UserVo('wen4','104'),
       new com.web.vo.UserVo('web5','105')
    }"></s:set>
    <s:property value="#users"></s:property>
    <table border="2" width="500px">
       <tr><th>编号</th><th>姓名</th> <th>密码</th></tr>
       <s:if test="#user!=null&&#users.size()>0">
          <s:iterator value="#users" var="user" status="i">
             <s:if test="#i.first">
                <s:set var="color" value="blue"></s:set>
             </s:if>
             <s:elseif test="#i.last">
                <s:set var="color" value="pink"></s:set>
             </s:elseif> 
             <s:elseif test="#i.odd">
                <s:set var="color" value="green"></s:set>
             </s:elseif> 
             
             <tr style="background-color:${color}">
                <td>${i.index}</td>
                <td>${user.uname }</td>
                <td><s:property value="#user.pwd"/></td>
             </tr>
          </s:iterator>
       </s:if>
    
    </table>

    3、集合合并标签 append和merge:     将多个集合合并成一个集合

属性::  var -  新集合的名称

eg:

 <s:appendvar="newCollection">

 <s:param value="{'中国', '美国', '英国'}"></s:param>

 <s:param value="{'德国', '泰国', '新加坡'}"></s:param>

 </s:append>

 <s:iterator value="#newCollection" var="cur">

 <s:property value="#cur"/><br/>

 </s:iterator>

注:merge用法和append相同,结果的组织不一样.

4、字符串分割标签 generator:     将一个字符串按照指定分隔符分割成一个字符串数组

   属性:

          separator:分隔符

eg:

<s:generator separator=","val="'中,华人,民共和,国'" var="arr"/>

<s:iterator value="#arr"var="cur">

    <s:property value="#cur"/><Br/>

</s:iterator>

          val(value):字符串


 5、集合子集标签  subset

     从集合中取出一个子集,注意:子集被放在值栈的顶部,subset标签执行完后子集自动移除

属性:

   source:集合

   start:起始索引

   count:子集中元素个数

eg:

<s:subset source="{'中国', '美国', '法国', '德国', '泰国', '新加坡'}" start="1"count="3">

<s:iterator  var="cur">

<s:property value="#cur"/>

</s:iterator>

</s:subset>

6、排序标签 sort

     根据定义的排序规则,对集合中的元素进行排序,排序后生成的新的集合放在值栈顶部,标签结束后自动删除.

属性:comparator:实现Comparator的类

          source:集合

eg:     

<s:bean name="com.aptech.sorted.LengthSorted"var="ls“/>

<s:sort comparator="#ls"source="{'中1','88w','777','6666'}">

<s:iterator>

<s:property/><br/>

</s:iterator>

</s:sort>

数据标签

1、设置变量标签 set

用于设置一个新变量,并将新变量放入指定的作用域中

属性:

Var: 新变量的引用

Value:值

eg:

<s:set var="v1"value="'中华人民共和国'" scope="page"></s:set>

<s:property value="#attr.v1"/>

:如果不指定,默认放在Stack Context中

2、栈顶置值标签 push

将某个值置于值栈的顶部,标签结束后,将从值栈中移除.

属性:

value: 即值

eg:

<s:push value="'众美女听令'" >

<s:property/>

</s:push>

3、javabean创建标签 bean

用于创建javabean的实例,如果设置了var值,则存于Stack Context,否则,标签结束后自动移除.

属性:

      name: javabean类名(带包)

      var: 名称

eg:

  

<s:bean name="com.aptech.entity.Student"var="stu">

<s:param name="sid">1</s:param>

<s:param name="sname">张三好</s:param>

<s:param name="sbirthday">2009-9-9</s:param>

</s:bean>

<s:property value="#stu.sbirthday"/>

4、日期格式化标签 date

格式化日期并输出

属性:

     name:日期

     format:格式化字符串

eg:  

<%pageContext.setAttribute("d", new Date()); %>

<s:date name="#attr.d"format="yyyy年MM月dd日 HH时mm分ss秒"/>

5、调试标签 debug

用于当前环境下Value Stack和stackcontext中保存的数据

6、资源包含标签 include

用于将一个html,jsp或servlet包含到当前页面中,使用param传递参数

属性:

      value:包含页面名称

eg:

     <s:include value="MyHtml.html"></s:include>

7、URL生成标签 url

生成URL地址,可以通过param标签传递请求参数,如果参数为中文,自动编码

属性:

     value: url值

     action: action名称,自动加上.action

eg:
<s:url value="control.jsp"var="url">

<s:param name="id">中华人民共和国</s:param>

</s:url>

<a href="<s:propertyvalue="#url" />">链接</a>

<s:url action="test"var="url2"></s:url>

<s:property value="#url2"/>

8、数据输出标签 property

用于输出值栈,Stack Context中的数据

属性:

      value:要输出的值

如果输出值栈中的值,不用#

如果输出Stack Context中的值,要用#

如果省略value,表示取出值栈的栈顶对象输出


原创粉丝点击