Ich würde gern verstehen, was die Semantik hinter dem "?faces-redirect=true"
in der Aktionseigenschaft eines <h:commandlink>
-Tags in JSF2.0 ist. Egal ob mit oder ohne, die Anwendung navigiert tatsächlich zu der in der Aktion angegebenen Zielseite. Auf den ersten Blick scheint es also, dass der einzige Effekt kosmetischer Natur ist, d. H. Dem Benutzer Feedback zu geben (wenn er die besuchte URL des Browsers betrachtet), dass er auf eine neue Seite gewechselt ist. Aber wenn es so harmlos und frei von Nebenwirkungen ist, kann ich nicht sehen, warum es nicht das Standardverhalten ist. Ich vermute, dass es mit dem Post-basierten Mechanismus von JSF2.0 zu tun hat. Ich habe beim Durchstöbern einer JSF-Anwendung festgestellt, dass die URLs, die man in seinem Browser sieht (wenn ?faces-redirect=true
nicht verwendet wird), diejenigen der "vorherigen" "Seite" sind.
meta-NB. Ich stehe hinter einer Firewall und habe Probleme mit dem Thema "SO benötigt externes JavaScript von einer anderen Domain", daher entschuldige ich mich für die fehlende Formatierung. Ich werde in einigen Stunden auch Feedback zu Ihren Antworten geben, wenn ich von einer anderen Domain aus zugreifen kann.
Die Navigation von Seite zu Seite sollte nicht mit POST durchgeführt werden. Sie sollten dafür das normale <h:link>
oder <h:button>
anstelle von <h:commandLink>
oder <h:commandButton>
verwenden.
Also statt
%Vor%sollten Sie eigentlich
verwenden %Vor%Dies hat den großen Vorteil, dass die Website jetzt SEO-freundlich ist. Suchmaschinen indexieren nämlich Formulare nicht.
Verwenden Sie <h:commandLink>
only , wenn Sie ein Formular mit einer Benutzereingabe senden müssen. Aber oft wird das Ergebnis nur auf der gleichen Seite dargestellt, wenn nötig bedingt wiedergegeben / enthalten. Nur bei erfolgreichen Einreichungen, die unbedingt auf eine andere Seite gehen müssen (z. B. Anmelden / Abmelden), sollten Sie tatsächlich eine Weiterleitung senden. Dies ist das so genannte Post-Redirect-Get-Muster .
Tags und Links redirect post jsf navigation