2012-09-07 40 views
2

我有一個導航管理bean爲每個用戶。如何強制託管bean首先初始化?

我需要它在任何其他bean之前初始化,因爲bean需要一個值。

我可以知道我應該怎麼做?我試過eager="true"但它不起作用。

通過faceconfig的任何快速和簡單的解決方案將不勝感激。

回答

0

從我看到你應該引用另一個bean。假設有一個實用工具類可以從上下文中抽取一個bean。

基本上 - >

//Bean A 
public void doSomething() 
{ 
    String required = Utility.getBeanB().getRequiredValue(); 
    use(required); 
} 
... 
//Bean B 
public String getRequiredValue() 
{ 
    return "Hi, I'm a required value"; 
} 

我有有一個「會話Bean」,存儲的東西,如用戶的喜好,共享對象等幾個大型的網絡應用程序...這方法完美的作品。通過使用對bean的引用,您無需鏈接初始化。該方法總是取決於另一個bean中的方法,從而保證了初始化的順序。

有多種方式訪問​​bean的,但我通常都要經過EL路線 - >

Get JSF managed bean by name in any Servlet related class

祝你好運,我儘量保持「功能純」時,我可以 - 我希望能夠考慮到這種語言而笑起來!

2

只需在bean的@PostConstruct中執行所需的初始化作業。

@PostConstruct 
public void init() { 
    // Here. 
} 

當第一次注入/引用另一個bean時,它將被調用。

eager=true僅適用於應用程序範圍的bean。

+0

servlet容器首次加載託管bean(啓動時)後,此@PostConstruct init()將被調用4次 – sytolk

+0

這不是默認行爲。 – BalusC