码迷,mamicode.com
首页 > 其他好文 > 详细

ognl表达式的小知识点

时间:2016-05-27 21:58:15      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

  今天在做一个登录模块时,想再登录之后的首页上显示登陆者姓名,自然就想到在action里将登陆者姓名传入session中,然后在页面通过ognl提取信息,action代码如下:

1 if(us.getUser_name().equals(username)&&us.getPassword().equals(password))
2             {
3                     ActionContext.getContext().getSession().put("user_login",username);//将登陆信息放入actioncontext中
4                 //ServletActionContext.getRequest().getSession().setAttribute("user_login",username);
5                 return SUCCESS;
6             }

页面显示代码:

1 <div id="huanying"><s:property value="#user_login"/>,欢迎你!

然后,就出问题了……取不到值;

当时我就在想啊,session应该是在valueStack中的context中的,通过ognl的#+属性值的方法应该可以的啊,怎么也想不通。于是用request(用的是转发即默认,不是重定向)和context都试了一下,结果是只有放入context中的值才能被取出来。这就尴尬了,,,,开始,我还怀疑是值没存进session和request中,因此我用el表达式测了一下,完全没问题,所以我就想是不是自己的ognl写错了。结果一度娘,果然出了问题,ognl虽然可以提取所有值域中的值,但是如果是session或者request中的值就必须要加上相关的域名:

1 <s:property value="#session.user_login"/>//取存在sessiong中的值
2 <s:property value="#request.user_login"/>//取存在request中的值(前提是转发而不是非定向)

技术分享

ognl默认是直接从context中取值,所以才出了问题。EL表达式是从四大作用域按从小到大的顺序取值。

  哎……还是学艺不精啊。。。。。。不过问题虽然小,但也算是一种积累啦……

ognl表达式的小知识点

标签:

原文地址:http://www.cnblogs.com/jkavor/p/5535874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!