0
我存储我的用户信息到会话bean是这样的:会话bean
@Component
@Scope(value="session" , proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserInfos {
public List<Integer> roles;
public Integer idUser;
public List<Integer> getRoles() {
return roles;
}
public void setRoles(List<Integer> roles) {
this.roles = roles;
}
public Integer getIdUser() {
return idUser;
}
public void setIdUser(Integer idUser) {
this.idUser = idUser;
}
}
在我的控制,我把这个bean在会话的属性:
@Controller
public class FooController {
@Autowired
private UserInfos userInfos;
@RequestMapping(value="/foo/login")
public String login_foo(HttpServletRequest request){
....
userInfos.idUser = ...
userInfos.roles = ...
request.getSession().setAttribute("userInfos", userInfos);
....
}
}
但是,当我试着用它在jsp
页面${ sessionScope.userInfos.idUser }
的值总是null
。
当我尝试
(${ sessionScope.userInfos }) - (${ sessionScope.userInfos.idUser })
我得到这个:
([email protected]) -()
所以,我怎么能使用一个会话bean的属性在JSP页面?
因为当我在我的控制器调试userInfos.idUser
的值不为空或空。
我能想到的唯一解释是Spring可能通过动态代理对象代理您的bean。但是,由于Spring始终期望对象的行为如同** java beans **(私有变量,公共getter和setter),所以公共方法将被拦截,而公共变量则不会(因为它们不能)。所以,请记住让可变成员总是**私人**。 –