在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()方法时得到的总是原生的字符串,并不会执行解析。这是为什么?
2. 当action执行完,并想根据strut.xml 中result的配置跳转时,如果我想在result跳转的页面字符串上使用ognl,我可以这样写: <result name = "success">/${toward}.jsp</result>当然这个toward是action中的一个属性,已经在execute方法中赋了相应的值。在该处ognl表达式可以正常解析,并且如果我将${toward} 换成 ${#request.contextPath}也可以正常获取到该request属性的值。
那么问题来了~~
这个ognl什么时候能够正常解析,什么时候无法解析?
这个ognl能不能获取我认为有两个方面的因素:
1. struts框架的强制规定: 在action执行完之前不会解析ognl,在action执行之后会解析ognl

2. valueStack在整个action访问过程中的状态是怎样变化的,什么时间向其中放入了什么对象

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

还有就是这其中的原理

在strut.xml 中使用ognl的更多相关文章

  1. struts2 拦截器的注册在strut.xml中

    根据需要:需要在struts.xml中注册拦截器为以下内容  根据自己的业务需要更改参数 <!DOCTYPE struts PUBLIC "-//Apache Software Fou ...

  2. 浅析Struts2中的OGNL和ValueStack

    要了解Struts2与OGNL表达式的关系,我们必须先搞清楚以下三个概念: 1.  ActionContext它是Action运行的上下文环境,Action的多项设置都存放在次,我们每一次Action ...

  3. Mybatis配置文件SqlMapConfig.xml中的标签

    SqlMapConfig.xml配置文件中的属性 1 配置内容 properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器 ...

  4. mybatis的mapper代理,SqlMapConfig.xml中配置,输入和输出映射使用案例

    public class User { private int id; private String username;// 用户姓名 private String sex;// 性别 private ...

  5. 配置文件Struts.xml 中type属性 redirect,redirectAction,chain的区别

    1.redirect:action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失.  2.redirectAction:action处理完后重定向到一 ...

  6. 转载:MyBatis mapper.xml中使用静态常量或者静态方法

    转自:https://my.oschina.net/wtslh/blog/682704 今天偶然之间刷到了这样一篇博客,有点意外 mybatis 还可以这样使用ONGL常量的方式,该方式针对 xml的 ...

  7. MyBatis中的OGNL教程

    MyBatis中的OGNL教程 有些人可能不知道MyBatis中使用了OGNL,有些人知道用到了OGNL却不知道在MyBatis中如何使用,本文就是讲如何在MyBatis中使用OGNL. 如果我们搜索 ...

  8. web.xml中welcome-file-list的作用

    今天尝试使用struts2+ urlrewrite+sitemesh部署项目,结果发现welcome-file-list中定义的欢迎页不起作用: <welcome-file-list> & ...

  9. web.xml中load-on-startup的作用

    如下一段配置,熟悉DWR的再熟悉不过了:<servlet>   <servlet-name>dwr-invoker</servlet-name>   <ser ...

随机推荐

  1. vim使用02

    编辑 剪切光标所在的字符: <x>; 剪切并插入: <s> 撤销操作:撤销至上一个命令之间的修改: <u> 恢复上一次撤销操作: <C r> 剪切光标所 ...

  2. Rectangle(csu)

    Description Now ,there are some rectangles. The area of these rectangles is 1* x or 2 * x ,and now y ...

  3. Codeforces 633C Spy Syndrome 2(DP + Trie树)

    题目大概说给一个加密的字符串,加密规则是把原文转化成小写字母,然后各个单词反转,最后去掉空格.现在给几个已知的单词,还原加密的字符串. 和UVa1401一个道理.. 用dp[i]表示加密字符前i个字符 ...

  4. oracle视图

    视图 SELECT -- int.rowner "rgroup owner", -- int.rname "refresh group", mv.owner a ...

  5. Storm和JStorm(阿里的流处理框架)

    本文导读: 1.What——JStorm是什么? 1.1 概述 .2优点 .3应用场景 .4JStorm架构 2.Why——为什么启动JStorm项目?(与storm的区别) .1storm的现状.缺 ...

  6. AngularJS学习笔记之directive—scope选项与绑定策略

    From:http://www.linuxidc.com/Linux/2015-05/116924.htm scope:{}使指令与外界隔离开来,使其模板(template)处于non-inherit ...

  7. android 百度地图 通过剪裁图片添加 Marker

    初始化百度地图: private void initViews() { mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mM ...

  8. IOS UI segmentedControl UISegmentedControl 常见属性和用法

    UISegmentedControl中一些常见的属性和用法 //设置以图案作为分段的显示,仅需要图案的轮廓,这样颜色为分段的背景颜色 //    NSArray *items = @[[UIImage ...

  9. 洛谷 P1991 无线通讯网 Label:最小生成树 || 二分

    题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...

  10. 20145330《Java程序设计》第一次实验报告

    20145330<Java程序设计>第一次实验报告 实验一Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Ja ...