Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
die locale auf englisch und reRender alles damit es auf englisch angezeigt wird. Wenn ich aber jetzt weiter navigiere (also auf eine andere jsp) verliert die locale ihren Wert und alles ist wieder deutsch. Warum? Und wie kann ich das ändern?
Hm, wahrscheinlich ziehtsich Java auf der neuen Seite die Locale aus den gesendeten Http-Headern, einfach auf jeder seite (bzw mbean) entsprechend setzen ..
JSF hat nen bestimmten Ablauf zur Bestimmung der Locale: JSF Locale
Must also für jede View setzen und gegenfalls gewählten Wert auch noch in irgend nem Session Objekt speichern.
private boolean localeLoaded = false;
private boolean initialized = false;
public MenuBean() {
super();
if (!localeLoaded) {
localeLoaded = true;
FacesContext.getCurrentInstance().getViewRoot().setLocale(
super.getSession().getSelectedLocale());
}
}
public String init(){
if (!initialized){
initialized = true;
return "initialized";
}
else return null;
}
Durch den zurückgegebenen String wird eine redirect-Navigation auf die menu.jsp selbst getriggert. Das ist nötig weil ansonsten zwar die locale geändert ist, aber die messages noch auf der default locale stehen. Erst nachdem man irgendwas in der bean anstößt würdw auf z.B. englisch umgestellt.
Durch die booleans wird sichergestellt dass die locale nur einmal geladen und die redirect Navi nur einmal durchgeführt wird.
Dass beim Login mal initial ein locale gesetzt werden muss ist soweit klar.
Sobald du ein Bean hast, welches das locale zurückgibt, kann man es aber auch ein bisschen einfacher haben:
genau
und da user bestimmt net imma jedesmol neu wählen will
warum dann net gleich im user object, welches dann oder irgendwann mal aus db geladen wird
Dass beim Login mal initial ein locale gesetzt werden muss ist soweit klar.
Sobald du ein Bean hast, welches das locale zurückgibt, kann man es aber auch ein bisschen einfacher haben:
genau
und da user bestimmt net imma jedesmol neu wählen will
warum dann net gleich im user object, welches dann oder irgendwann mal aus db geladen wird