私は、RESTfulURLを必要とするseamでプロジェクトを行っています。/ group / {group}/{locale}にマップされているビューがあります。そのページには、いわゆるメッセージのリストがあります。各メッセージには、メッセージへの変更を保存するためのボタンがあります。これは、次のようなアクションBeanにリンクされています。
<h:commandButton type="submit" value="Save Changes" action="#{groupAction.update}" />
各メッセージにはアンカーがあるため、/ group / {group} / {locale}#{id}を使用して、ブラウザをそのアンカーに移動させることができます。これが、POSTの後にリダイレクトが必要な理由です。
<page view-id="/group.xhtml">
<rewrite pattern="/group/{group}/{locale}"/>
<param name="group" value="#{groupAction.group}"/>
<param name="locale" value="#{groupAction.locale}"/>
<navigation from-action="#{groupAction.update}">
<redirect view-id="/group.xhtml?group=#{group}&locale=#{locale}##{id}"/>
</navigation>
</page>
また、適切なRESTful URLに到達するための次のリダイレクトルール(UrlRewriteFilter)があります。
<outbound-rule>
<from>^/group.xhtml\?group=([\.\w]+)&locale=([\.\w]+)\#([\.\w]+)\?cid=(\d*)$</from>
<to type="temporary-redirect" last="true">/group/$1/$2#$3</to>
</outbound-rule>
ここでconversationIdを削除します。これは作品をテストしました。ただし、seamは引き続き'?conversationId={cid}'を追加します。だから問題は何ですか?'/ group / {group} / {locale}#{id}?conversationId={cid}'のようなURLを想像してみてください。明らかに、ブラウザはこれを嫌い、自動的にそのアンカーに移動しません。
私はいくつかの調査を行い、シームのドキュメントで自分の問題を発見しました。
29.1.4.2。リダイレクトを使用した会話の伝播 このフィルターを使用すると、Seamはブラウザーのリダイレクト間で会話コンテキストを伝播できます。ブラウザのリダイレクトをインターセプトし、Seam会話識別子を指定するリクエストパラメータを追加します。リダイレクトフィルターはデフォルトですべてのリクエストを処理しますが、この動作はcomponents.xmlで調整することもできます。
<web:redirect-filter url-pattern="*.seam"/>
私はredirect-filterを必要とせず、フィルターを「無効にする」ためにurl-patternに無効なものを入れてみました。しかし、それはうまくいきませんでした。だから私の質問は今です:
シームでリダイレクトフィルターを無効にするにはどうすればよいですか?
答えが見つかりません。シームのドキュメントでは、web.xmlでそれを無効にすることについて説明していますが、私の試みはまだ成功していません。