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

感谢帮助。

4

0 回答 0