Ich mache ein Projekt in der Naht, das erholsame URLs erfordert. Ich habe eine Ansicht, die auf/group/{group}/{locale} abgebildet ist. Auf dieser Seite habe ich eine Liste von so genannten Nachrichten. Jede Nachricht verfügt über eine Schaltfläche zum Speichern von Änderungen an der Nachricht. Dies wird so zu einer Aktion Bohne verbunden:Deaktivieren des Umleitungsfilters der Naht
<h:commandButton type="submit" value="Save Changes" action="#{groupAction.update}" />
Jede Nachricht hat einen Anker, so/Gruppe/{Gruppe}/{locale} # {id} verwendet werden kann, um den Browser zu diesem Anker gehen zu machen. Aus diesem Grund ich eine Umleitung nach dem POST müssen:
<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>
Auch habe ich die folgende Umleitungsregel (UrlRewriteFilter) auf die richtige RESTful-URL zu erhalten:
<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>
ich die ConversationId hier abzustreifen. Dies wurde getestet und funktioniert. Bei der Naht wird jedoch noch eine '? ConversationId = {cid}' angehängt. Also, was ist das Problem? Stellen Sie sich eine URL wie '/ group/{group}/{locale} # {id}? ConversationId = {cid}' vor. Offensichtlich mag der Browser dies nicht und wird nicht automatisch zu diesem Anker gehen.
habe ich einige der Forschung und entdeckte mein Problem in der Naht Dokumentation:
29.1.4.2. Konversationsweitergabe mit Weiterleitungen Dieser Filter ermöglicht es Seam, den Konversationskontext über Browserweiterleitungen hinweg zu verbreiten. Es fängt alle Browserweiterleitungen ab und fügt einen Anforderungsparameter hinzu, der die Seam-Konversationskennung angibt. Die Umleitung Filter werden alle Anfragen standardmäßig verarbeiten, aber dieses Verhalten kann auch in components.xml eingestellt wird:
<web:redirect-filter url-pattern="*.seam"/>
Ich brauche nicht die Umleitung-Filter und ich versuchte, etwas ungültig in den URL-Mustern setzen zu "disable" den Filter. Das hat jedoch nicht funktioniert. Also meine Frage ist jetzt:
Wie deaktiviere ich den Redirect-Filter in der Naht?
Ich kann die Antwort nicht finden. Die Nahtdokumentation spricht davon, es in web.xml zu deaktivieren, aber meine Versuche waren noch nicht erfolgreich.
Haben Sie UrlRewriteFilter in Ihrem konfiguriert web.xml? –
Ja, ich habe und UrlRewriteFilter funktioniert, aber immer noch Naht fügt die? ConversationId –
Haben Sie versucht, SeamRedirectFilter aus Ihrer web.xml vollständig zu entfernen? vielleicht nur um den Fall zu testen. –