Struts2 - OGNL表达式和Struts2标签库

来源:互联网 发布:丹江口水电站待遇 知乎 编辑:程序博客网 时间:2024/05/29 15:43

一、OGNL表达式

    访问Action的普通属性:

<s:property value="msg"/>
    访问Action中对象的普通属性:
<s:property value="user.name"/>
    访问Action中对象的普通方法:
<s:property value="user.info()"/>
    访问Action中普通方法:
<s:property value="actionMethod()"/>

    访问静态方法:

<s:property value="@com.xilen.action.StaticCls@stcSay()"/>
    访问静态属性:
<s:property value="@com.xilen.action.StaticCls@stcMsg"/>
    访问Math类的静态方法:
<s:property value="@@max(2,3)"/>

    访问Action中List|Set|Map:

<s:property value="userList"/>

    访问容器的大小:

<s:property value="map.size()"/>
    访问List中元素的某个属性的集合(如所有user的name):
 <s:property value="userList.{name}"/>
    访问List中的元素(对象)的某个属性的集合中的特定值:
<s:property value="userList.{name}[1]"/>

    访问List中的某个元素:

 <s:property value="userList[0]"/>
    访问Map中所有的key:
<s:property value="map.keys"/>
    访问Map中所有的value:
<s:property value="map.values"/>

    访问指定的请求参数(注意:每一个请求参数都是一个数组):

<s:property value="#parameters.parm"/>  
二、Struts2标签库

    1、<s:property/>

        一般格式:

            <s:property value="" default="" escape=""/>

        属性说明:

            value:默认当OGNL表达式处理,如果只要其当作字符串需加单引号

            defaulut:默认值,值当作字符串

            escape:表示对于得到的的字符串是否解析为HTML,默认为true(不解析)

        使用示例:

<!--获取ValueStack中的对象--><s:property value="user.name"/><!--获取StackContext中的对象--><s:property value="#request.id"/>
    2、<s:if test=""/>、<s:elseif test=""/>和<s:else/>

<!-- 数值比较 --><s:if test="1<2"></s:if><!-- 字符串比较 --><s:if test="'abc'=='abc'"></s:if><!-- 获取parameters中的值做比较(注: #parameters.parm=='parm'不能实现比较) --><s:if test="#parameters.parm[0]=='parm'"></s:if><!-- 获取Action中的属性做比较  --><s:if test="user.name=='admin'"></s:if>
    3、<s:iterator/>

        一般格式:

            <s:iterator value="userList" var="u" status="stat" >

        属性说明:

            value:OGNL表达式

            var:将遍历的当前对象别名后放至StackContext中

            status:当前遍历的信息,通过其可取得当前遍历的count(统计,始于1)、index(索引,始于0)、

                    even(是否偶数),odd(是否奇数)等

            补:另有begin(开始)、end(结束)、step(步长)等

        使用示例

<!-- 遍历普通List --> <s:iterator value="list" status="stat" > <s:property value="#stat.index"/> <!-- 当前索引 --> <s:property value="#stat.odd"/> <!-- 是否为奇数次遍历  --><s:property /> <!-- 获取当前对象 --></s:iterator><!-- 遍历对象List --><s:iterator value="userList" var="user" status="stat" ><s:property value="#user.name" /> <!-- 获取属性 --><s:property value="#user.name.toUpperCase()" /> <!-- 对属性添加处理 --></s:iterator><!-- 遍历Map --><s:iterator value="map" status="stat" ><s:property /> <!-- 获取当前key=value --><s:property value="key" /> <!-- 获取当前key --><s:property value="value" /> <!-- 获取当前value --></s:iterator>
三、补充

    1、使用标签库,jsp需添加:

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

    2、要访问静态类,struts需配置:

<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>

 

 

0 0
原创粉丝点击