我正在使用primefaces开发一个jsf应用程序,并拥有一个由各种视图使用的SalesBean
@ManagedBean
@ViewScoped
public class SalesBean implements Serializable, IGlobals {
private static final long serialVersionUID = 2384518099615211725L;
@ManagedProperty(value = "#{applicationBean}")
private ApplicationBean application;
@ManagedProperty(value = "#{sessionSettingsBean}")
private SessionSettingsBean settings;
@PostConstruct
public void refresh() {
this.trader=settings.getSelectedTrader();
}
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class SessionSettingsBean implements Serializable {
private Trader selectedTrader;
public Trader getSelectedTrader() {
return selectedTrader;
}
public void setSelectedTrader(Trader selectedTrader) {
this.selectedTrader = selectedTrader;
}
}
postConstruct应该表示SalesBean属性引用了sessionBean的属性。
在一个视图中,我将属性保存到注入的会话bean
settings.setSelectedTrader(商);
在另一个视图中,我想使用settings.getSelectedTrader(),但是当我调试@PostConstruct时,设置的selectedTrader属性为null,即使我检查它最初在sessionBean中设置时是否被正确实例化了以前的观点。
任何人都可以给出一个关于发生了什么的指针,可能会有几个版本的会话bean(在会话开始时只调用一个构造函数),那么如何在视图之间将属性置为空白 - 任何想法/建议非常感谢