Я делаю проект в шов, который требует спокойных URL. У меня есть представление, которое сопоставлено с / group / {group} / {locale}. На этой странице у меня есть список так называемых сообщений. Каждое сообщение имеет кнопку для сохранения изменений в сообщении. Это связано с компонентом действия следующим образом:
<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>
Также у меня есть следующее правило перенаправления (UrlRewriteFilter), чтобы получить правильный RESTful URL:
<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>
Я раздеваю разговор. Это было проверено и работает. Однако к шву все еще добавляется '? Разговорный идентификатор = {cid}'. Так в чем проблема? Что ж, представьте себе URL-адрес типа «/ group / {group} / {locale} # {id}? РазговорId = {cid}». Очевидно, что браузер не любит это и не будет автоматически переходить на этот якорь.
Я провел некоторое исследование и обнаружил свою проблему в документации по шву:
29.1.4.2. Распространение разговора с перенаправлениями
Этот фильтр позволяет Seam распространять контекст разговора через перенаправления браузера. Он перехватывает любой браузер, перенаправляет и добавляет параметр запроса, который определяет идентификатор диалога Seam. Фильтр перенаправления будет обрабатывать все запросы по умолчанию, но это поведение также можно настроить в файле components.xml:
<web:redirect-filter url-pattern="*.seam"/>
Мне не нужен фильтр перенаправления, и я попытался поместить что-то недопустимое в шаблон URL, чтобы «отключить» фильтр. Однако это не сработало. Итак, мой вопрос сейчас:
Как отключить фильтр перенаправления в шве?
Я не могу найти ответ. В документации по шву говорится о его отключении в web.xml, но мои попытки пока не увенчались успехом.