2012-03-29 63 views
0

我有一個JSF會話範圍bean,我將當前用戶(登錄)信息保存在該bean中。我也有一個既不是servlet也不是bean的類,它只是一個類。我想訪問jsf bean並獲取類中的當前用戶信息。我找到了一個servlet訪問jsf bean的解決方案,但是我找不到解決這個問題的辦法。有沒有辦法做到這一點?從既不是servlet也不是bean的類訪問JSF bean

謝謝!

回答

1

如果提到的類的實例在同一個線程已調用FacesServlet HTTP請求的線程運行,那麼你可以通過FacesContext然後Application#evaluateExpressionGet()得到它。另請參閱Get JSF managed bean by name in any Servlet related class

如果提到的類的實例正在不同的線程中運行,那麼您需要事先將所需的信息傳遞給類的構造函數,方法或將所需的信息存儲在某個共享數據源中JSF webapp和獨立類都可以訪問數據庫,本地磁盤文件系統文件或JNDI上下文。根據具體情況和環境,CDI的@Named + @Inject也可能是解決方案。

「最好的方法」取決於具體的功能要求,這個問題並不清楚,所以我不能指出正確的方式,也不能給出任何啓示的例子。