于strut.xml 中以ognl

以struts.xml 中使ognl有个别栽者的急需:

1.
于action执行时由struts.xml中读取param标签中之价值,然后调用标签name属性相应的set方法对action中的变量赋值。

2.
于action执行完execute(或外办法)后,struts.xml通过param变量读取action中要么任何对象(例如request,session等)的属性值并推行有算。

于当下片栽状况先要采用ognl表达式应该什么用:

  1. 当struts.xml 的action标签下可以定义<param name =
    “name”></param>标签,在action执行性赋值的底时候会自行读取该action对应标签下的param标签,并基于对应的name值调用setName()方法为action属性赋值。但是如果想在该处使用ognl标签,例如我思念当该处定义一个变量存储项目之绝望目录,并以action执行set方法时对性能赋值时用欠变量设置进action。理应如此描绘:

<param name =
“rootPath”>${#request.contextPath}</param>,然后想着action会执行相应的setRootPath()方法对action的性质rootPath赋值(解析过后之)。但是于action执行setRootPath()方法时获得的连续原生的字符串,并无会见履解析。这是为何?

  1. 当action执行了,并想依据strut.xml
    中result的布置跳转时,如果我思在result跳反的页面字符串上应用ognl,我可如此描写:
    <result name =
    “success”>/${toward}.jsp</result>当然者toward是action中的一个属性,已经于execute方法中致了相应的价值。在该处ognl表达式可以健康解析,并且使自己以${toward}
    换成 ${#request.contextPath}也堪正常获取到拖欠request属性的值。

图片 1

那么问题来了~~

以此ognl什么时候会正常解析,什么时无法解析?

这ognl能无克得到自我认为有个别只地方的元素:

  1. struts框架的要挟规定:
    在action执行完毕之前不见面解析ognl,在action执行下会解析ognl

2.
valueStack在整action访问过程遭到的状态是怎样变化之,什么日子往内放入了哟目标

自己思闹明白怎么要说能够不能够当action执行性赋值或者当执行execute方法(也得以是另外方)时获得struts.xml中布置的带ognl表达式的参数(上面说的需1)?

再有就是是就之中的规律