• OGNL基本机制及使用时所需要注意的事情 对于本人而言


    OGNL(Object Graph Navigation Language),是一种表达式语言。使用这种表达式语言,你可以通过某种表达式语法,存取Java对象树中的任意属性、调用Java对象树的方法、同时能够自动实现必要的类型转化。如果我们把表达式看做是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥梁。

       #符号的三种用法

       1)访问非根对象属性,例如示例中的#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀。实际上,#相当于ActionContext. getContext();#session.msg表达式相当于ActionContext.getContext().getSession(). getAttribute("msg") 。

       2)用于过滤和投影(projecting)集合,如示例中的persons.{?#this.age>20}。

       3) 用来构造Map,例如示例中的#{'foo1':'bar1', 'foo2':'bar2'}。

    %符号

          %符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。如下面的代码所示:

    <h3>构造Map</h3>

        <s:set name="foobar" value="#{'foo1':‘OGNL1', 'foo2':'OGNL2'}" />

        <p>The value of key "foo1" is <s:property value="#foobar['foo1']" /></p>

        <p>不使用%:<s:url value="#foobar['foo1']" /></p>

       <p>使用%:<s:url value="%{#foobar['foo1']}" /></p>

    运行界面如下所示。

    he value of key "foo1" is OGNL1

    不使用%:#foobar['foo1']

    使用%:OGNL1

    $符号主要有两个方面的用途

         1) 在国际化资源文件中,引用OGNL表达式,例如国际化资源文件中的代码:reg.agerange=国际化资源信息:年龄必须在${min}同${max}之间。

         2) 在Struts 2框架的配置文件中引用OGNL表达式

    OGNL使用时需要有set方法

    在action中  例如注册 获取jsp表单中的数据

    那么在表单中应该这样写  <input   type="text" name=实体类名.属性名 />

    在action中完善注册信息

    添加表单中所没有的信息  例如注册时的状态 0 未激活  1 已激活 

    private string state;

    然后添加set注入方法

    在action的registeraction中进行完善

     

     

    谢谢各位大大指导和补充

  • 相关阅读:
    影响cpu性能的因素有哪些?
    linux系统中 SElinux安全子系统
    linux 系统中个人用户主页功能
    理解 Segmentation fault
    VI高级命令集锦
    How to be a Star 怎样成为明星?
    名词解释:DEADBEEF
    Unix还能走多远?
    Awk 实例,第 1 部分
    77年出生的朋友,你们过的还好吗?
  • 原文地址:https://www.cnblogs.com/cpx123/p/7644937.html
Copyright © 2020-2023  润新知