@PreDestroy иногда вызывается один раз сразу после @PostConstruct, иногда вызывается дважды при повторном запуске GET
В настоящее время я сталкиваюсь со странными проблемами с методами @PreDestroy в Mojarra 2.2.14: поведение, кажется, какое-то неопределенное. иногда он вызывается один раз непосредственно после @PostConstruct, иногда он вызывается дважды при повторном запуске GET. То же самое при выходе с текущей страницы: иногда вызывается clear(), но в большинстве случаев нет. @PostConstruct, с другой стороны, работает как положено.
В результате все поля ProductDetailBean являются нулевыми, в то время как вызывающая страница "productDetails.xhtml".
Есть ли какие-либо известные проблемы об этом @PreDestroy? Было бы очень хорошо, если бы кто-нибудь мог дать полезную информацию об этом. какие бы подходящие обходные пути? у этого компонента много полей, и я очень заинтересован в том, чтобы все очистить, когда пользователь покидает страницу.
К сожалению, я не могу сейчас перейти на 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;
}
}