2010-07-02 61 views

回答

2

使用ManagedProperty註釋:

@ManagedBean(name="beanA") @RequestScoped 
public class BeanA implements Serializable { 
    @ManagedProperty(value="#{beanB}") 
    private BeanB beanB; 
    public void setBeanB(BeanB b) { this.beanB = b; } 
    public BeanB getBeanB() { return beanB; } 
} 

@ManagedBean(name="beanB") @RequestScoped 
public class BeanB implements Serializable {} 

沒有測試的代碼。您可以通過在faces-config.xml中定義託管屬性來獲得類似的結果。

+0

我對你的回答也很感興趣。假如我想在beanA的'@PostConstruct init()'方法中調用beanB方法,我可以做一些像這樣的'beanB#someMethod'嗎?該方法可以從表單的提交操作中返回一個值嗎? – ChuongPham 2011-04-13 10:53:29

+0

@ user463053 - 它取決於值的來源 - 如果通過表達式'#{param.foo}'直接從參數映射中注入它,則可以在'@ PostConstruct'中使用它;如果該值綁定到某個控件,那麼它將在更新模型值階段之後纔可用。如果您需要更多詳細信息,請使用短代碼片段打開一個新問題,其中顯示您想要實現的目標。 – McDowell 2011-04-13 11:01:08

+0

感謝您的反饋。我在這裏創建了一個新帖子[http://stackoverflow.com/questions/5648299/jsf-2-manageproperty-inject-one-request-scoped-bean-into-another]。你能否提供一些建議,因爲我現在在這個問題上停留了一天。 – ChuongPham 2011-04-13 11:20:23