@PreDestroy有时在@PostConstruct之后直接调用一次,有时在再次触发GET时调用两次

时间:2017-06-19 08:45:45

标签: jsf mojarra view-scope predestroy

我目前面临Mojarra 2.2.14中@PreDestroy方法的奇怪问题:行为似乎是某种未定义的。有时在@PostConstruct之后直接调用一次,有时在再次触发GET时调用两次。离开当前页面时相同:有时会调用clear(),但大多数情况下不会。另一方面,@ PostConstruct按预期工作。

结果是,ProductDetailBean的所有字段都为null,wenn调用页面“productDetails.xhtml”。

有关于@PreDestroy的一些已知问题吗?如果有人可以提供一些有用的信息,那将是非常好的。什么是合适的解决方法?这个bean有很多字段,当用户离开页面时,我非常感兴趣清除所有内容。

可悲的是,我暂时无法改为CDI-Beans ......

@ManagedBean(name="productDetail")  //javax.faces.bean.ManagedBean
@ViewScoped                        //javax.faces.bean.ViewScoped
public class ProductDetailBean implements Serializable {

      private String field;

      @PostConstruct
      public void init(){
        System.out.println("init Behaviour is ok, callend only once!");
        this.field = "blah";
      }


      @PreDestroy
      public void clear(){
        System.out.println("called one or multiple times after init() ");
        this.field = null;
      }

   public void setField(String field) {
     this.field = field;
   }

   public String getField() {
       return this.field;
   }

}

0 个答案:

没有答案