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 管理。
感谢帮助。