Einen Redirect von Bean in JSF kann getan werden, indem
externalContext.redirect("foo.xhtml");
Aber ich will das Regeln, festgelegt in <navigation-rule/>
(faces-config.xml) für <from-outcome/>
&& übergeben Sie Befehl Linie Argumente.
externalContext.redirect("from-outcome?param=bar");
Nicht funktioniert. Wie macht man das?
Den
ExternalContext#redirect()
nimmt eine URL, keine navigation Ergebnis.Müssen Sie zurück-navigation Ergebnisse von Maßnahmen deklarierten Methoden zurück
String
.Konfigurieren Sie die navigation Fall zu senden, eine Umleitung durch das hinzufügen
<redirect>
.Beachten Sie, dass Sie auch nur nutzen, implizite JSF-navigation ohne die Notwendigkeit für diese XML-Chaos:
Wenn Sie in ein Ereignis oder ajax-listener-Methode, die nicht einen string zurückgeben Ergebnis, dann könnte man immer greifen
NavigationHandler#handleNavigation()
um die gewünschte navigation.Nicht-navigation-case äquivalent für die mit
ExternalContext#redirect()
.<value>
wie so<value>#{bean.param}</value>
. Dies entsprichtreturn "/foo.xhtml?faces-redirect=true¶m=" + URLEncoder.encode(param, "UTF-8");
(obwohl einige Mojarra Versionen haben bugs mit Zeichensatz verwendet wird).navigation-rule
ohne Rückgabe eines String? Da gibt es Situationen, wo dies nicht möglich ist. Was ist zu tun, wenn ich will redirect aus einem Ajax-call? Da kann ich nicht wieder die navigation als String oder bin ich da falsch?ExternalContext#redirect()
mit einer echten URL dann. Können Sie konvertieren eine navigation Ergebnis zu einem echten URL mitViewHandler#getBookmarkableURL()
.from-outcome
zuViewHandler#getBookmarkableURL()
ich eineIllegalArgumentException
. Er sagt, es muss mit " / " beginnen. aber wenn ich so die navigation-Regel wird nicht verwendet. Vielleicht sollte ich starten Sie eine neue Frage und zeigen, was ich getan habe? Vielen Dank für die Hilfe!getBookmarkableURL()
nimmt ein Sicht-ID, nicht um ein XML-Ergebnis), die Sie verwenden solltenNavigationHandler#handleNavigation()
. Beispiele: stackoverflow.com/questions/13530651/... und stackoverflow.com/questions/8255472/...ViewHandler#getBookmarkableURL()
aber mit einer navigation in der Regel, nicht anzeigen-ID. Dies ist zum Beispiel nötig, wenn ich mit primefacesDefaultTagCloudItem
. Es nimmt die URL als String für die Tag-Cloud.Application#getNavigationHandler()
zuConfigurableNavigationHandler
sind, dann werden Sie in der Lage sein zu rufengetNavigationCase()
es, die wiederum hat unter anderemgetBookmarkableURL()
.