4

MyFaces Orchestra は?conversationContext=x、ページ上の各リソースに を追加します。プロジェクトの公開部分 (管理部分のみ) には会話スコープを使用していないため、次の 2 つの理由からそのパラメーターを削除したいと考えています。

  • ブラウザの静的リソースのキャッシュを壊します
  • それは醜いです :)

Orchestra のソース コードを調べて、おそらく何かを回避しようと思いますが、私が知らないこのためのオプションがあれば最高です。

4

1 に答える 1

1

その質問に対する答えは簡単であると同時に、ちょっとした回避策でもあります。MyFaces オーケストラは、パラメーターHttpServletResponseをエンコードするためにオリジナルのラッパーを使用しcontesationContextます。

Orchestra を使用するには、インターセプター (JSF) とFilter. まだラップされていない場合、どちらも応答をラップしようとします。したがって、オーケストラFilterとインターセプターの両方が使用されている場合、Filterが最も起動し、応答オブジェクトをラップし、要求に属性を設定します。これは、インターセプターに、応答を再度ラップしないことを示します。

を追加する場合は、特定のFilterURL パターンに一致するように を設定できますconversationContext。しかし、私のニーズには、そのパターン マッチャーは単純すぎるので、代わりに独自のフィルターを作成しました。したがって、インターセプターに応答をラップしないように指示するには、次のことを行う必要があります。

httpRequest.setAttribute(
                RequestParameterServletFilter.REQUEST_PARAM_FILTER_CALLED,
                Boolean.TRUE);
于 2009-12-17T20:12:36.427 に答える