zoukankan      html  css  js  c++  java
  • gnl总结(#,%,$)

    Ognl表达式struts标签“%,#,$”

    1、什么是Ognl?

    OGNL(Object-Graphic Navigation Language),对象图道行语言。是一种可以方便操作对象属性的开源表达式语言。

    2、特点?

    a、支持对象的方法调用,形式,eg:objName.methodName();

    b、支持静态类的方法调用和值访问,expression:@【类全名(包括包路径)】@【方法名|值名】,eg:@tutorial.MyConstant@App_NAME;

    c、支持赋值操作和表达式串联,eg:price=100,discount=80,calculatePrice()//返回80???

    d、访问OGNL上下文(OGNL context)和ActionContext

    e、操作集合对象

    3、使用OGNL表达式

    1)“#”符号有三种用途

    a、访问非根对象(struts中值栈为根对象),eg:OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性:

    名称   作用域 

    eg:

    1-1)parameters :包含当前HTTP请求参数的Map

    #parameters.id[0]=>作用相当于request.getParameter("id")

     

    1-2)request:包含当前HttpServletRequest的属性(attribute)的Map

    #request.userName=>作用相当于request.getAttribute("userName");

     

    1-3)session:包含当前HttpSession属性(attribute)的Map

    #session.userName=>session.getAttribute("userName");

     

    1-4)application:包含当前应用的ServletContext的属性(attribute)的Map

    #application.userName=>application.getAttribute("userName");

    notice:attr用于按request>session>application顺序访问其属性(attribute),#attr.userName;构造Map:{'foo1':'bar1','foo2':'bar2'}

    b、用于过滤和投影

    eg:books.{?#this.price>35} 

    c、用于构建Map集合

    在页面上取一个Map的值:

    eg:<s:property value="#myMap['foo1']"/>

    2)“%”符号的用途是在标签的属性被理解为字符串类型时,告诉执行环境%{}里的是OGNL表达式,很有点类似javascript里面的eval_r()功能,例如 :   

    var oDiv = eval_r("document.all.div"+index)       var oDiv = eval_r("document.all.div"+index)  

    当index变量为1时,语句就会被当作var oDiv = document.all.div1  var oDiv = document.all.div1来执行。%{}就是起这个作用。

    eg:

    <s:set name="myMap" value="#{'key1':'value1','key2':'value2'}"/>

    <s:property value="#myMap['key1']"/>

    <s:url value="#myMap['key1']">   //输出:#myMap['key1']

    <s:url value="%{#myMap['key1']}"//输出:value1

    notice:struts2里不同的标签对于ognl表达式的理解是不一样的

    3)“$”符号有两种用途

    3-1)在国际化资源文件中,引用OGNL表达式

    3-2)在struts2配置文件中,引用OGNL表达式

    eg:

      1. <action name="saveUser" class="userAction" method="save">   
      2.   
      3. <result type="redirect">listUser.action?msg=${msg}</result>   
      4.   
      5. </action>   
      6.   
      7. <action name="saveUser" class="userAction" method="save">       
      8.   
      9. <result type="redirect">listUser.action?msg=${msg}</result>   
      10.   
      11. </action>  愿望:http://www.cnblogs.com/luoxing/archive/2012/02/20/2359603.html
  • 相关阅读:
    dal configure 源码分析
    dubbo源码
    mysql replace info 和 auto_increment可能产生的问题
    消息队列总结
    关于系统并发数和QPS的思考
    字符打印流及字节打印流使用
    oracle分组查询二,row_number() over()函数的使用
    oracle表函数使用table function
    Script:10g中显示Active Session Count by Wait Class
    剑指 Offer 61. 扑克牌中的顺子
  • 原文地址:https://www.cnblogs.com/langtianya/p/4702057.html
Copyright © 2011-2022 走看看