簡體   English   中英

將FacesContext注入spring bean

[英]injecting FacesContext into spring bean

我有一個bean,我最近從一個托管bean轉變為一個spring-bean。

一切都很好,直到某個時候調用以下方法:

Exception e = (Exception) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(
                    AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY);

事情發生了,因為FacesContext.getCurrentInstance()返回null。

是否可以將faces上下文注入我的bean?

我今天遇到了完全相同的問題,所以我想發布這個答案以供將來參考。

可以使用以下方式注入FacesContext:

@ManagedProperty("#{facesContext}")
FacesContext faces;

如果Spring和JSF在應用程序中正確集成,它也適用於spring bean。

參考:

集成Spring和JSF

注入FacesContext

是否可以將faces上下文注入我的bean?

不確定,但在這種特殊情況下,它不需要。 ExternalContext#getSessionMap()基本上是HttpSession屬性的外觀。 到目前為止,您只需要以某種方式在Spring bean中獲取HttpServletRequest ,然后通過HttpServletRequest#getSession()從中獲取HttpSession 然后,您可以通過HttpSession#getAttribute()訪問會話屬性。

我不做Spring,但Google告訴我你可以按如下方式獲得它:

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

完成后,您可以這樣做:

Exception e = (Exception) request.getSession().getAttribute(AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM