0
나는이 같은 세션 빈에 내 사용자 정보를 저장 :세션 빈은
@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);
....
}
}
그러나 :
는@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;
}
}
내 컨트롤러에서 나는 속성으로 세션에서 콩을 넣어 나는 ${ sessionScope.userInfos.idUser }
의 값이 항상 null
인 jsp
페이지에서 사용하려고합니다.
나는이있어
(${ sessionScope.userInfos }) - (${ sessionScope.userInfos.idUser })
시도 :
([email protected]) -()
그래서 어떻게 JSP 페이지에서 세션 빈의 속성을 사용할 수 있습니까?
내 컨트롤러에서 디버그 할 때 userInfos.idUser
값이 null 또는 비어 있지 않기 때문에.
내가 생각할 수있는 유일한 설명은 아마도 스프링이 동적 프록시 객체를 통해 빈을 프록시 처리한다는 것입니다. 그러나 Spring은 객체가 ** java beans ** (private 변수, public getter 및 setter)로 동작 할 것으로 항상 기대하므로 public 메소드는 가로 채고 있지만 공용 변수는 가로 채지 못하고 있습니다. 따라서 변수 멤버를 ** private **로 항상 기억하도록하십시오. –