我目前面临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;
}
}