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),所以公共方法將被攔截,而公共變量則不會(因爲它們不能)。所以,請記住讓可變成員總是**私人**。 –