FacesContextインスタンスはスレッドごとに一意であり、 は を取得しながらリクエストの開始時に をFacesServlet作成します(これは のコントラクトで あり、HTTP サーブレット リクエストに関連付けられた応答の最後で ( を呼び出すことにより) 削除します)。ThreadLocal<FacesContext>FacesContextFacesContextFactory#getFacesContext)FacesContext#release
JSF コードでa を実行するFacesContext#getCurrentInstance()と、HTTP サーブレットの要求/応答処理全体で常に同じインスタンスが取得されます。
メソッドについては、メソッドUIViewRoot#processDecodesが渡されたインスタンスではなく、独自に作成されたインスタンスを使用していることを示す可能性のある行は実際にはありません。そう思わせたセリフは?
からFacesServlet#serviceを作成するメソッドで見ることができます。これを示すメソッドからの抜粋を次に示します-FacesContextFacesContextFactoryFacesServlet#service
// Acquire the FacesContext instance for this request
FacesContext context = facesContextFactory.getFacesContext
(servletConfig.getServletContext(), request, response, lifecycle);
// Execute the request processing lifecycle for this request
try {
...
} catch (FacesException e) {
...
}
finally {
// Release the FacesContext instance for this request
context.release();
}
これを考えると、からではないインスタンスをUIViewRoot#processDecodes持つことはできないと思います。FacesContextFacesContextFactory
あなたが言っているので -FacesContextから返されるいくつかの追加パラメータを に設定しましたFacesContextFactory。つまり、 の独自のカスタム実装があることを意味します。FacesContextFactoryこの場合、インスタンスがFacesServletmojarra ではなくに注入されていることを確認していますcom.sun.faces.context.FacesContextFactoryImplか?あなたはmojarraを使用していますか)?