2010-07-02 39 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

相关问题