2011-10-25 91 views

回答

2

您需要手動初始化它通常的方式,把它放在ExternalContext#getSessionMap()

UserSession userSession = new UserSession(); 
userSession.setUser(user); 
externalContext.getSessionMap().put("userSession", userSession); 

在設計恰當的名字,我寧願通過注入只是作爲@ManagedProperty委託的工作,JSF:

@ManagedBean 
@RequestScoped 
public class Login { 

    @ManagedProperty("#{userSession}") 
    private UserSession userSession; 

    public String login() { 
     // ... 

     if (user != null) { 
      userSession.setUser(user); 
     } 

     // ... 
    } 

} 
+0

很酷..謝謝。當一個來自另一個bean的託管屬性設置在當前bean中時,它只是一個小澄清,它不是複製,而是對原始屬性的引用,所以當本地屬性被更改時,原來的內容會被更改,對嗎?(這是我很困惑) –

+0

不客氣。是的,它只是指向相同的參考。任何變化都會反映出來。 Java是OO,你知道。 – BalusC

2

設置登錄後您的usersession bean的user屬性。無論登錄前是否立即執行該操作,因爲它的user屬性將保留爲空,直到登錄完成。

並注入usersession豆在您的請求應對豆@javax.inject.Inject註釋。

相關問題