【发布时间】:2011-03-11 03:05:47
【问题描述】:
在 JSF2 中,如何将对象从一个 requestscoped bean 传递到另一个 requestscoped bean? 我真的不想让它们成为 sessionscoped。
也许我可以将一个 bean 注入另一个?
谢谢。
【问题讨论】:
-
您是否尝试在没有会话范围 bean 的情况下跨请求存储状态?如果是这样,请查看“flash”范围,看看它是否有帮助。
在 JSF2 中,如何将对象从一个 requestscoped bean 传递到另一个 requestscoped bean? 我真的不想让它们成为 sessionscoped。
也许我可以将一个 bean 注入另一个?
谢谢。
【问题讨论】:
使用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 中定义托管属性来获得类似的结果。
【讨论】:
@PostConstruct init()方法中调用beanB方法,我可以这样做beanB#someMethod吗?这个方法可以从表单的提交动作中返回一个值吗?
#{param.foo} 直接从参数映射中注入它,您可以在 @PostConstruct 中使用它;如果该值绑定到控件,则在更新模型值阶段之后才可用。如果您需要更多详细信息,请使用短代码 sn-ps 打开一个新问题,显示您想要实现的目标。