Page foo.xhtml
--------------
<f:view transient="#{fooBean.transient}">
...
</f:view>
@ViewScoped("fooBean")
public class FooBean {
private boolean _transient = false;
public void setTransient(boolean t) {
_transient = t;
}
public boolean isTransient() {
return _transient;
}
}
在调用页面bar.xhtml的应用程序期间,创建了一个fooBean,fooBean.setTransient(true),默认为false。然后导航到页面foo.xhml,如何使页面foo.xhtml使用在调用应用程序阶段期间创建的fooBean?
我尝试使用preRenderEvent将fooBean设置为由
管理FacesContext context = FacesContext.getCurrentInstance();
context.getApplication ().getELResolver().setValue(context.getELContext(), null, "fooBean", fooBean);
但为时已晚。 UIViewRoot.transient已在buildView()
期间设置。我想知道在调用buildView()
之前#{fooBean.transient}
期间是否有任何回调,以便我可以将fooBean
设置为由JSF管理。
感谢您的帮助。