我需要從另一個請求作用域bean中實例化一個會話bean &爲該bean設置值。我怎樣才能從另一個bean那裏做到這一點?從另一個請求作用域Bean中實例化一個會話作用域的託管bean
其實我需要後,用戶已成功登錄&我需要設置會話bean的user
託管屬性來實例化usersession
豆。
我需要從另一個請求作用域bean中實例化一個會話bean &爲該bean設置值。我怎樣才能從另一個bean那裏做到這一點?從另一個請求作用域Bean中實例化一個會話作用域的託管bean
其實我需要後,用戶已成功登錄&我需要設置會話bean的user
託管屬性來實例化usersession
豆。
您需要手動初始化它通常的方式,把它放在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);
}
// ...
}
}
設置登錄後您的usersession
bean的user
屬性。無論登錄前是否立即執行該操作,因爲它的user
屬性將保留爲空,直到登錄完成。
並注入usersession
豆在您的請求應對豆@javax.inject.Inject
註釋。
很酷..謝謝。當一個來自另一個bean的託管屬性設置在當前bean中時,它只是一個小澄清,它不是複製,而是對原始屬性的引用,所以當本地屬性被更改時,原來的內容會被更改,對嗎?(這是我很困惑) –
不客氣。是的,它只是指向相同的參考。任何變化都會反映出來。 Java是OO,你知道。 – BalusC