zoukankan      html  css  js  c++  java
  • OGNL 对象视图导航语言

    Object Graphics Navigate Language

    类似于EL(Expression Language)表达式,

    可以帮助我们在配置文件、JSP中来获取对象的值

    这门语言比EL功能更强,体现在运算,还可以做一些对

    数据的条件筛选

    在获取普通属性和调用普通方法的时候,在每一个值的前面

    实际上有一个this对象,这个this对象就是处理这个请求的

    action的对象(不是单例模式)

    //循环    value="要循环的集合"

    <s:iterator var="p" value="list">

    <s:property value="#p.pname" />

    </s:iterator>

    //逻辑判断

    <s:if test="num <= 10">

    小于等于10

    </s:if>

    <s:else if test="num <= 5">

    小于等于5

    </s:else if>

    <s:else>

    其他情况

    </s:else>

    Action取得普通属性的值:

    <s:property value="username" />

    Action取得对象的普通属性的值:

    <s:property value="users.name" />

    Action取得对象的普通属性的值:

    <s:property value="users.dog.type.toUpperCase()" />

    调用Action的普通方法:

    <s:property value="sum(1,2)" />

    调用Action对象的普通方法:

    <s:property value="users.sum(1,3)" />

    调用Action对象的普通方法:

    <s:property value="users.dog.sum(1,3)" />

    开启静态访问开关

    struts.xml中增加一个常量的配置

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

    得到Action的静态属性:

    //<s:property value="@包名.类名@属性" />

    <s:property value="@action.OgnlAction@PI" />

    得到Action的静态方法:

    //<s:proerty value="@包名.类名@方法名(参数)"/>

    <s:property value="@action.OgnlAction@sum(2.1,3.1)" />

    调用Action对象的静态属性:

    <s:property value="@entity.Users@PI" />

    调用Action对象的静态属性:

    <s:property value="@entity.Users@sum(2.1,3)" />

    调用默认类(Math)静态方法:

    <s:property value="@java.lang.Math@max(3,4)" />

    调用Action的构造方法:

    <s:property value="new action.OgnlAction()" />

    调用Action的构造方法:

    <s:property value="new action.OgnlAction('tom').sum(3,4)" />

    调用Action对象的构造方法:

    <s:property value="new entity.Users().sum(4,5)" />

    得到list集合:

    <s:property value="list" />

    得到list集合某个元素:

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

    得到list集合中的某个元素的属性的值:

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

    得到list集合中的某个元素的属性的值:

    <s:property value="list[0].dog.type" />

    得到list集合中元素的某一个属性的集合:

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

    得到list集合中元素的属性的集合:

    <s:property value="list.{dog}.{type}[0]" />

    得到list集合长度:

    <s:property value="list.size()" />

    得到set集合:

    <s:property value="set" />

    得到set集合某个元素:

    <s:property value="set.iterator().next()" />

    得到set集合中的属性的集合:

    <s:property value="set.{name}[0]" />

    得到set集合中的属性的集合:

    <s:property value="set.{dog}.{type}[0]" />

    得到set集合长度:

    <s:property value="set.size()" />

    得到map集合:

    <s:property value="map" />

    得到map集合中某个元素:

    //<s:property value="map['key']" />

    <s:property value="map['u1']" />

    得到map集合中所有的key:

    <s:property value="map.keys" />

    得到map集合中所有的value:

    <s:property value="map.values" />

    得到map集合长度:

    <s:property value="map.size()" />

    OGNL中的条件筛选

    1、所有的条件都封装在{}

    2、利用条件筛选出来结果后,有可能并非全部都需要

    可以通过这三个字符获取你想要的结果

    ?所有的、^取第一个(异或符号)$取最后一个

    3#this表示的并非是“.”前面那个集合对象,

    而是前面那个集合里面的某一个元素

    带条件的集合(?--所有):

    <s:property value="list.{?#this.id>=1002}" />

    带条件的集合($--最后):

    <s:property value="list.{$#this.id>=1002}" />

    带条件的集合(^--首个):

    <s:property value="list.{^#this.id>=1002}" />

    带条件的集合(?--所有):

    <s:property value="list.{?#this.id>=1002 and #this.name.length()>4}" />

    带条件的集合(?--所有):

    <s:property value="list.{?#this.id>=1002}

    .{dog}.{?!(#this.type.length()>4)}[0].type" />

     

     

    ===================集合操作==========================

    <fieldset>

            <legend>LIST操作</legend>

            <s:property value="list[1].getPname()" />

            <br>

            <s:property value="list.{dog}.{dname}[1]" />

            <s:property value="list.{dog.dname}[1]" />

        </fieldset>

        <fieldset>

            <legend>SET操作</legend>

            <s:property value="set.iterator().next().pname" />

        </fieldset>

     

        <fieldset>

            <legend>MAP操作</legend>

            <s:property value="map['a']" />

            <br>

            <s:property value="map.values" />

        </fieldset>

     

        <fieldset>

            <legend>条件筛选</legend>

            <s:property value="list.{$#this.age>=18}.{pname}" />

            <br>

            <!-- 获取所有年满18岁,并且他们的狗的年龄大于等于2岁 -->

            <s:property value="list.{?#this.age>=18 and #this.dog.age>=2}.{pname}" />

            <s:property value="list.{?#this.age>=18}.{dog}.{?#this.age>=2}.{dname}" />

        </fieldset>

  • 相关阅读:
    linux学习25 运维加薪技能-Linux特殊权限及facl扩展
    linux学习24 Linux运维必备技能-文件查找命令企业级应用
    linux学习23 Linux运维必备技能-vim编辑器高效用法进阶
    linux学习22 Linux运维必备技能-vim编辑器深入讲解
    linux学习21 运维核心节能-egrep进阶及文本处理工具应用
    linux学习20 运维核心技能-grep命令与基本正则表达式
    【Hadoop离线基础总结】关键路径转化率分析(漏斗模型)
    【Hadoop离线基础总结】Hive级联求和
    【Hadoop离线基础总结】hive的窗口函数
    【Hadoop离线基础总结】网站流量日志数据分析系统
  • 原文地址:https://www.cnblogs.com/shaohaixiong/p/4603240.html
Copyright © 2011-2022 走看看