如何使用在页面导航之前创建的managedBean

时间:2013-04-17 04:31:15

标签: jsf managed-bean transient

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管理。

感谢您的帮助。

0 个答案:

没有答案