我在觀察我的requestScoped bean,如下所述,在單個請求期間多次創建。每次這個bean被重新實例化時,就在很久以前,這個bean已經被銷燬了,就像日誌所說的那樣。在單個請求期間多次創建/銷燬RequestScoped bean
@ManagedBean(name="namesDirectory")
@RequestScoped
public class NamesDirectory {
public static NamesDirectory getCurrentInstance(){
FacesContext context = FacesContext.getCurrentInstance();
return context.getApplication().evaluateExpressionGet(context, "#{namesDirectory}", NamesDirectory.class);
}
@PostConstruct
public void foo(){
Easy.log("bean created");
}
@PreDestroy
public void foo1(){
Easy.log("bean destroyed");
}
}
可能是什麼Bean的原因之前完成單個請求的所有處理&我怎麼照顧不要讓這種事情發生的被破壞?
編輯:
我在我的小面的代碼一些地方導致請求被多次觸發了<p:graphicImage url="#" />
。刪除這些後,我仍然看到這個請求創建,但只有兩次,以前它是更多的時間。
其實我在嘗試登錄到我的應用程序時看到了這個。所以在提供憑證&後,它們被驗證,bean被實例化使用&,但在此之後,用戶被移動到成功的登錄頁面&,在構建期間再次需要該bean,因此它被創建爲原樣不存在的。這導致這個請求scoped bean被創建2次,因爲我相信這只是一個請求。