[英]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。
參考:
是否可以將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.