@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;
   }

}

0 ответов

Другие вопросы по тегам