gpt4 book ai didi

java - 关于 Java 指针和更改 JSF 应用程序中的语言环境的基本知识

转载 作者:行者123 更新时间:2023-12-01 12:57:13 25 4
gpt4 key购买 nike

我只是尝试根据这篇文章“Internationalization in JSF with UTF-8 encoded properties files”来实现 JSF 国际化,并发现了一些奇怪的东西。使用此 bean 中的代码更改区域设置是正确的方法吗?

@ManagedBean
@SessionScoped
public class LocaleBean {

private Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();

public Locale getLocale() {
return locale;
}

public String getLanguage() {
return locale.getLanguage();
}

public void setLanguage(String language) {
this.locale = new Locale(language);
}

}

据我了解,Java private Locale locale 必须是从 viewRoot 对象指向实际 Locale 对象的指针,但此方法对我不起作用。相反,当我将 setLanguage(String language) 方法更改为此

public void setLanguage(String language) {
FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale(language));
}

它开始工作了。现在我想知道错误在哪里? @BulusC 代码有什么问题?也许我做错了什么,也许我忘记了什么?当我调试时,我发现 private Locale locale 和 viewRoot 中的 locale 对象是不同的对象。

最佳答案

确实,代码缺少您发布的行。来自这个问题:Localization in JSF, how to remember selected locale per session instead of per request/view ,由BalusC回答,您可以检查setLanguage的代码(代码取自BalusC的回答,不是我的):

public void setLanguage(String language) {
locale = new Locale(language);
//this is the line you added
FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
}

关于java - 关于 Java 指针和更改 JSF 应用程序中的语言环境的基本知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23777342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com