发现EL表达式${model.xxxx}取不出Session范围属性

赖芳升 发布于 2013/01/23 16:37
阅读 3K+
收藏 1

我是做一个登陆测试的时候遇到这个问题,

我想在登陆成功的时候,在session放入一个User 类型<Model>,想在其他页面直接使用EL表达式输出里面的属性,但是遇到了问题。

setSessionAttr("login_user1", LoginUser);
setAttr("login_user2", LoginUser);
setAttr() 可以直接使用${user.xxxx}输出属性.

但是setSessionAttr()500错误 提示没有该属性.

后来直接对两种情况进行直接toString()输出 发现如下结果:

session:org.lfs.exam.model.User@21ab6de6 {id:1, sex:男, name:admin, realname:xxxx, password:admin}

request:{id=1, sex=男, name=admin, realname=xxxx, password=admin}

 不知道怎么处理 求El输出属性的方法

加载中
0
赖芳升
赖芳升

答案见 http://www.oschina.net/question/942197_88641 因为作者对session和request做了不同的处理

可以对继承了Model类的之类 覆盖getAttrs()方法 然后使用${sessionScope.attrs.FieldName}

0
赞山风
赞山风

看了描述,不太明白,大致猜测是取法问题吧,类似${sessionScope.sessionVariable}

赖芳升
赖芳升
直接${sessionScope.VaribleName.FieldName} 出错 提示 没有该属性
0
JFinal
JFinal

1:setSessionAttr("login_user1", LoginUser);取法如下:

${session.loginUser.name}

2:setAttr("login_user2", LoginUser);取法如下:

${login_user2.name}

另外在 view 中使用session 需要用一下 SessionInViewInterceptor,JSP页面不需要,jsp 页面有内置的 session对象


赖芳升
赖芳升
我用的是JSP展现方式,而且刚才已经在全局范围配置了SessionInViewInterceptor 但是使用${session.loginUser.name}还是提示没有该属性....
JFinal
JFinal
回复 @赖芳升 : SessionInViewInterceptor 之中为session设置的名称为session而非sessionScope。找不到属性是因为没有使用SessionInViewInterceptor这个拦截器
赖芳升
赖芳升
${session.loginUser.name} session 不是应该写成 sessionScope吗? session 没有任何结果 如果写成sessionScpoe ${sessionScope.loginUser.name} 出现500错误 提示 loginUser 没有该属性
返回顶部
顶部