zoukankan      html  css  js  c++  java
  • Struts2 标签库详解(转)

    Struts2标签库

    包括:

    OGNL

    Struts2标签分类

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

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

    OGNL

        Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(ExpressionLanguage,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性:,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。

    Struts2默认的表达式语言是OGNL

         OGNL的符号--#:

    1、访问OGNL上下文和Action上下文,#相当于ActionContext.getContext() .

    2、构造Map

    用于过滤和投影(projecting)集合

    ?——所有匹配选择逻辑的元素

    ^——只提取符合选择逻辑的第一个元素

    $——只提取符合选择逻辑的最后一个元素

    名称

    作用

    示例:

    parameters 

    读取请求参数

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

    request 

    读取request中的属性:

    <s:property value="#request.r"/>

    session 

    读取session中的属性:

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

    application 

    读取application中的属性:

    <s:property value="#application.a"/>

    attr

    request > session > application顺序访问其属性:

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

    范例:

         <s:iterator value="#{'china':'中国','usa':'美国','e':'俄国'}" var="c">

    <s:property value="#c.key"/>--<s:propertyvalue="#c.value"/><br/>

    </s:iterator>

    范例:

        <s:property value="#attr.list.{sname}[0]"/>

    <s:property value="#attr.list.{$#this.sid== 3}.{sname}[0]"/>

    支持对象方法调用 :

    <s:property value="#attr.p.doSomeThing('李四')"/>

    调用保存在pageContext中的Student对象的doSomeThing()

    [N]语法:

    从ValueStack的第N个位置开始取值

    top关键字:

    取出最顶端的对象

    示例::

    <s:push value="'阿拉伯联合酋长国'">

    <s:property value="[0].top"/>

    </s:push>

    从ValueStack中的第0个位置开始取出最顶部的对象,返回为”阿拉伯联合酋长国”

    Struts2标签分类

        1.分类:

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

         2.导入taglib

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

    控制标签

    1、条件标签 if…elseif…else

    主要属性::     test : 测试条件

        范例:

    <%! 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

    示例:

    遍历List

     <s:iterator value="{'中华人民共和国', '美利坚合众国', '阿拉伯联合酋长国'}" var="cur"status="st">

        <s:property value="#st.count"/>

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

     </s:iterator>

    遍历Map

     <s:iterator value="#{1: '中国', 2: '美国', 3: '日本'}" var="cur">

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

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

     </s:iterator>

         3、集合合并标签 append和merge

         将多个集合合并成一个集合

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

    示例:

                <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: 分隔符

    val(value): 字符串

    count:字符串數組中元素個數

    示例:

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

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

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

    </s:iterator>

    5、集合子集标签  subset

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

    属性::

    source: 集合

    start: 起始索引

    count: 子集中元素个数

    示例:

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

    <s:iterator  var="cur">

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

    </s:iterator>

    </s:subset>

    6、排序标签 sort

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

    属性::

    comparator: 实现Comparator的类

    source: 集合

    示例:

    <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:值

    示例:

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

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

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

    2、栈顶置值标签 push

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

    属性:

    value: 即值

    示例:

    <s:push value="'中华人民共和国'" >

    <s:property/>

    </s:push>

    3、javabean创建标签 bean

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

    属性:

    name: javabean类名(带包)

    var: 名称

    示例:

    <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:格式化字符串

    示例:

    <%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:包含页面名称

    示例:

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

    7、URL生成标签 url

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

    属性:

    value: url值

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

    示例:

    <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,表示取出值栈的栈顶对象输出

    总结

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

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

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

  • 相关阅读:
    检测http方法是否开启put方法
    md5爆破工具
    admin密码对应的MD5值
    http账户密码的截取
    CTreeCtrl和CListCtrl失去焦点时高亮选中项
    向OSG视图Viewer发送消息
    在ASP.NET MVC中使用jQuery的Load方法加载静态页面的一个注意点
    jQuery把所有被选中的checkbox的某个属性值连接成字符串
    报错:Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
    在ASP.NET MVC下有关上传图片脏数据的解决方案
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3062456.html
Copyright © 2011-2022 走看看