ExternalContext#redirect() keine Umleitung in das übergeordnete Verzeichnis
Ich habe zwei Seiten:
String page1 = "user/newuser.jsf";
String page2 = "department/newdepartment.jsf";
Wenn ich einen redirect zu page1
wie diese:
FacesContext.getCurrentInstance().getExternalContext().redirect(page1);
URL-änderungen an localhost:8080/NavFile/user/newuser.jsf
.
Auf dieser Seite habe ich ein redirect auf page2
:
FacesContext.getCurrentInstance().getExternalContext().redirect(page2);
URL-änderungen an localhost:8080/NavFile/user/department/newdepartment.jsf
. Aber es gibt keine user/department
Verzeichnis, in meiner Anwendung. Mein Ziel war es, einen redirect zu localhost:8080/NavFile/department/newdepartment.jsf
.
Wie ist das verursacht und wie kann ich es lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen relativen URL-Weiterleitung (d.h. wenn nicht ab
/
oder Schema) ist bezogen auf die aktuelle request-URL (als enduser sieht in der browser-Adressleiste). Es ist nicht magisch, relativ zum Kontext-Pfad in der server-Seite-die information ist völlig unbekannt in der client-Seite (Ihr wisst schon, eine Umleitung erfolgt über den webbrowser, das nicht durch den webserver).Wenn Sie umleiten möchten, relativ zum Kontext-Pfad, dann sollten Sie auch die Kontext-Pfad, so dass es zur Domäne bezogen. Sie erhalten das Kontext-Pfad dynamisch über
ExternalContext#getRequestContextPath()
.Im Falle von
page2
die vollständige redirect-URL wird/user/department/newdepartment.jsf
und der führende Schrägstrich/
es machen würde, relativ zu der Domänehttp://localhost:8080
, das ist genau das, was Sie wollen.Siehe auch: