分享

OGNL表达式struts2标签“%,#,$”

 comeonwyj 2018-07-05
OGNL表达式和struts标签的整合使用,及OGNL表达式的技术要点

使用OGNL表达式获取
 * appliaction : #appliaction.username 或者 #application['username'] ,相当于appliaction.getAttribute("username");
 * session : #session.username 或者 #session['username'],相当于session。getAttribute("username");
 * request : #request.username 或者 #request['username'],相当于request.getAttribute("username");
 * parameters: #parameters.username 或者 #parameters['username'],相当于 request.getParameter("username")
 * attr : 按照pageContext--->request---->session--->application 顺序访问属性

使用OGNL动态获取值:
 * 如果是属性: 直接写属性的名字
 * 如果是变量: 需要在变量的名字加个 #  的前缀。

关于struts2标签和OGNL的几个注意事项:
 * struts2 标签都支持动态数据访问,标签的属性都可使用ONGL表达式。struts 2 标签的属性都具有类型,
  * 可以简单的分为两类:字符创类型和对象类型。<s:url>为字符串 ,<s:set> <s:property>为Object类型
 * 对于字符串的属性,如果要访问动态数据,必须使用 %{...} 这样的语法,否则直接看成字符串常量。
 * 对于Object的属性,将直接看成OGNL表达式求解,如果需要对对象类型的属性指定字符串常量,则必须在这个字符串常量外加上一对单引号或者%{'constant String'}这样的语法
 * 如果对对象的属性使用了%{....}的语法,则语法会被忽略,而直接把内容当中OGNL 表达式求解。eg:<s:property value="%{#myurl}" /> 和<s:property value="#url" />作用是相同的。
 
 
 * 经验:如果分不清一个属性的值的类型是不是字符创类型的,可以直接加上%{....}


OGNL 表达式 和 EL 表达式的区别: 
 * 在struts2 中,OGNL表达式必须和struts2标签配合使用,而不能单独使用,而EL表达式可以单独使用,不能和struts2标签配合使用。
 * ActionContext 是struts2 中 OGNL 表达式的上下文,该上下文中有多个Map对象,eg:application , session等,包括ValueStack 。但是ValueStack是跟对象,可以直接访问,其他对象访问需要加 # 前缀。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多