2016-11-01 1 views
0

ich mein Benutzerinfo in eine Session-Bean wie folgt aus:Session Bean in JSP-Seite

@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; 
    } 


} 

In meinem Controller habe ich die Bohne in der Sitzung als Attribut:

@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); 
     .... 
    } 
} 

Aber wenn Ich versuche, es in jsp Seite zu verwenden, der Wert von ${ sessionScope.userInfos.idUser } ist immer null.

Wenn ich versuche,

(${ sessionScope.userInfos }) - (${ sessionScope.userInfos.idUser }) 

ich diese bekam:

([email protected]) -() 

So wie kann ich die Eigenschaften eines Session-Bean in JSP-Seite?

Da, wenn ich in meinem Controller debuggen der Wert userInfos.idUser ist nicht null oder leer.

Antwort

0

Wir lösen es durch Ersetzen:

userInfos.idUser = ... 
    userInfos.roles = ... 

Von:

userInfos.setIdUser(...); 
    userInfos.setRoles(...); 

Wenn jemand kann mir erklären, warum die Arbeit mit Eigenschaften festlegen es sehr nützlich sein wird.

+1

Die einzige Erklärung, die ich mir vorstellen kann, ist, dass Spring möglicherweise Ihre Bean über ein dynamisches Proxy-Objekt als Proxy verwendet. Da Spring jedoch immer erwartet, dass sich die Objekte wie ** JavaBeans ** verhalten (private Variablen, öffentliche Getter und Setter), werden die öffentlichen Methoden abgefangen, während die öffentlichen Variablen dies nicht tun (weil sie dies nicht können). Denken Sie also daran, die variablen Mitglieder immer als ** privat ** zu betrachten. –

Verwandte Themen