7.5. ページパラメータでの URL 書き換え
書き換えは
pages.xml 内のビューに対して発見されるパターンに応じて発生します。Seam の URL 書き換えは同一のパターンに基づいて受信および発信 URL 書き換えを行います。このプロセスの簡単なパターンを以下に示します。
<page view-id="/home.xhtml"> <rewrite pattern="/home" /> </page>
<page view-id="/home.xhtml">
<rewrite pattern="/home" />
</page>
この場合は、
/home の着信要求はすべて /home.xhtml に送られます。 通常は /home.seam をポイントする生成されたリンクは /home に書き換えられます。 書き換えパターンはクエリパラメータの前の URL 部分にのみ一致します。 それゆえ、 /home.seam?conversationId=13 と /home.seam?color=red は両方ともこの書き換え規則で一致します。
書き換え規則は、以下の規則に示すようにクエリパラメータを考慮することができます。
<page view-id="/home.xhtml">
<rewrite pattern="/home/{color}" />
<rewrite pattern="/home" />
</page>
<page view-id="/home.xhtml">
<rewrite pattern="/home/{color}" />
<rewrite pattern="/home" />
</page>
この場合、
/home/red の着信要求はあたかも /home.seam?color=red であるように処理されます。 同様に、 color がページパラメータの場合は /home.seam?color=blue と通常表示される発信 URL は代わりに /home/blue と出力されます。 規則は順番に処理されるため一般的な規則より先に限定的な規則を記述することが重要です。
デフォルトの Seam クエリパラメータも URL 書き換えを使ってマッピングが可能で、 さらに Seam のフィンガープリントを隠します。 次の例では
/search.seam?conversationId=13 は /search-13 と書き換えられます。
<page view-id="/search.xhtml">
<rewrite pattern="/search-{conversationId}" />
<rewrite pattern="/search" />
</page>
<page view-id="/search.xhtml">
<rewrite pattern="/search-{conversationId}" />
<rewrite pattern="/search" />
</page>
Seam URL 書き換えによりビュー単位でのシンプルで双方向の書き換えが可能になります。Seam 以外のコンポーネントを対象とするさらに複雑な書き換え規則については、Seam アプリケーションは
org.tuckey.URLRewriteFilter を使用し続ける、または Web サーバーで書き換え規則を適用させることができます。
URL 書き換えを使用する場合は Seam の 書き換えフィルタ を有効にする必要があります。 書き換えフィルタについては 「URL の書き換え」 で説明します。