MyFaces Orchestra は?conversationContext=x、ページ上の各リソースに を追加します。プロジェクトの公開部分 (管理部分のみ) には会話スコープを使用していないため、次の 2 つの理由からそのパラメーターを削除したいと考えています。
- ブラウザの静的リソースのキャッシュを壊します
- それは醜いです :)
Orchestra のソース コードを調べて、おそらく何かを回避しようと思いますが、私が知らないこのためのオプションがあれば最高です。
その質問に対する答えは簡単であると同時に、ちょっとした回避策でもあります。MyFaces オーケストラは、パラメーターHttpServletResponseをエンコードするためにオリジナルのラッパーを使用しcontesationContextます。
Orchestra を使用するには、インターセプター (JSF) とFilter. まだラップされていない場合、どちらも応答をラップしようとします。したがって、オーケストラFilterとインターセプターの両方が使用されている場合、Filterが最も起動し、応答オブジェクトをラップし、要求に属性を設定します。これは、インターセプターに、応答を再度ラップしないことを示します。
を追加する場合は、特定のFilterURL パターンに一致するように を設定できますconversationContext。しかし、私のニーズには、そのパターン マッチャーは単純すぎるので、代わりに独自のフィルターを作成しました。したがって、インターセプターに応答をラップしないように指示するには、次のことを行う必要があります。
httpRequest.setAttribute(
RequestParameterServletFilter.REQUEST_PARAM_FILTER_CALLED,
Boolean.TRUE);