在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的习性root帕特h赋值(解析过后的)。但是在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)?

还有正是这在那之中的法则