struts2中的ognl表达式_struts2 ognl表达式_struts2的ognl例题(3)

电脑杂谈  发布时间:2017-03-10 00:17:19  来源:网络整理

<resulttype="redirect">listUser.action?msg=${msg}</result>

</action>

------------------------------------------------------------------------------------------------------------------------------

使用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" />作用是相同的。struts2中的ognl表达式

* 经验:如果分不清一个属性的的类型是不是字符创类型的,可以直接加上%{....}

OGNL 表达式 和 EL 表达式的区别:

* 在struts2 中,OGNL表达式必须和struts2标签配合使用,而不能单独使用,而EL表达式可以单独使用,不能和struts2标签配合使用。

* ActionContext 是struts2 中 OGNL 表达式的上下文,该上下文中有多个Map对象,eg:application , session等,包括ValueStack 。但是ValueStack是跟对象,可以直接访问,其他对象访问需要加 # 前缀。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-36736-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...