在Struts.xml 中使用ognl

电脑杂谈  发布时间:2020-01-17 21:01:37  来源:网络整理

struts2怎么使用ognl_struts2的 ognl表达式_struts2 ognl

在struts.xml 中使用ognl有两种方面的需求:

1. 在action执行时从struts.xml中调用param标签中的值,然后读取标签name属性相应的set方法对action中的函数赋值。

2. 在action执行完execute(或其它方式)后,struts.xml通过param变量写入action中或其它对象(例如request,session等)的属性值并执行一些计算。

struts2的 ognl表达式_struts2怎么使用ognl_struts2 ognl

在这两种状况先如果使用ognl表达式必须怎样使用:

1. 在struts.xml 的action标签下可以定义标签,在action执行属性赋值的的之后会手动调用该action对应标签下的param标签,并按照相应的name值调用setName()方法为action属性赋值。但是即使想在该处使用ognl标签,例如我想在该处定义一个变量存储项目的根目录,并在action执行set方法时对属性赋值时将该函数设定进action。理应这样写:${#request.contextPath},然后希望着action会执行相应的setRootPath()方法对action的属性rootPath赋值(解析之后的)。但是在action执行setRootPath()方法时得到的总是原生的字符串,并不会执行解析。这是为什么?

2. 当action执行完,并想按照strut.xml 中result的配置跳转时,如果我想在result跳转的页面字符串上使用ognlstruts2 ognl,我可以这样写: /${toward}.jsp当然这个toward是action中的一个属性struts2 ognl,已经在execute方法中赋了相应的值。在该处ognl表达式可以正常解析,并且即使我将{toward} 换成 ${#request.contextPath}也可以正常获得到该request属性的值。

struts2的 ognl表达式_struts2 ognl_struts2怎么使用ognl

图片描述

那么问题来了~~

这个ognl什么时候能够正常解析,什么时候无法解析?

struts2的 ognl表达式_struts2 ognl_struts2怎么使用ognl

(

这个ognl能不能获取我觉得有两个方面的原因:

1. struts框架的强行要求: 在action执行完之前不会解析ognl,在action执行时候会解析ognl

struts2的 ognl表达式_struts2 ognl_struts2怎么使用ognl

2. valueStack在整个action访问过程中的状况是如何变化的,什么时间向其中放入了哪些对象

)

我想搞明白如何或者说能不能在action执行属性赋值或者在执行execute方法(也可以是其它方式)时获得struts.xml中配置的带ognl表达式的参数(上面说的需求1)?

还有就是这其中的原理


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

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

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