Robię projekt w szwie, który wymaga spokojnych adresów URL. Mam widok mapowany do/group/{grupa}/{locale}. Na tej stronie mam listę tak zwanych wiadomości. Każda wiadomość ma przycisk do zapisania zmian w wiadomości. Wiąże się to z fasoli działania tak:Wyłączanie filtru przekierowania szwów
<h:commandButton type="submit" value="Save Changes" action="#{groupAction.update}" />
Każda wiadomość ma kotwicę, więc/grupa/{grupa}/{locale} # {id} mogą być wykorzystane, aby przeglądarka przejść do tej kotwicy. To dlatego muszę przekierowanie po postu:
<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>
Również mam następującą regułę przekierowania (UrlRewriteFilter), aby dostać się do właściwego relaksującego 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>
I pozbawić conversationId tutaj. Zostało to przetestowane i działa. Jednak szew nadal dodaje "? ConversationId = {cid}". Więc w czym problem? Wyobraź sobie adres URL, taki jak "/ group/{group}/{locale} # {id}? ConversationId = {cid}". Oczywiście przeglądarka tego nie lubi i nie będzie automatycznie przechodzić do tej kotwicy.
Zrobiłem rozeznanie i odkryła mój problem w dokumentacji szew:
29.1.4.2. Propagacja konwersacji z przekierowaniami Ten filtr pozwala Seamowi propagować kontekst konwersacji w przekierowaniach przeglądarki. Przechwytuje wszelkie przekierowania przeglądarki i dodaje parametr żądania, który określa identyfikator konwersacji Seam. Filtr przekierowanie będzie przetwarzać wszystkie żądania domyślnie, ale takie zachowanie może być również regulowana w components.xml:
<web:redirect-filter url-pattern="*.seam"/>
ja nie potrzebuję przekierowania filtr i starałem oddanie czegoś nieprawidłowy w URL-wzór do "wyłącz" filtr. To jednak nie zadziałało. Moje pytanie brzmi teraz:
Jak wyłączyć filtr przekierowań w szwie?
Nie mogę znaleźć odpowiedzi. Dokumentacja szwów mówi o wyłączeniu go w web.xml, ale moje próby jeszcze się nie udały.
Czy skonfigurowałeś UrlRewriteFilter w swoim web.xml? –
Tak, mam i UrlRewriteFilter działa, ale nadal szew dodaje? ConversationId –
Czy próbowałeś całkowicie usunąć SeamRedirectFilter z web.xml? może być po prostu do testowania sprawy. –