gpt4 book ai didi

java - JSF setLocale 不能正常工作

转载 作者:搜寻专家 更新时间:2023-10-31 19:35:52 25 4
gpt4 key购买 nike

我按照描述在我的 JSF 应用程序中实现了国际化 here .

但我遇到了一个问题:当我更改语言环境时,我页面上的所有文本都会更改。但是,如果我单击导航链接转到另一个页面,语言环境将跳回到标准语言环境!

我想我在这里漏掉了什么。所以我在下面提供了我的代码,希望你能有所帮助:

LocaleBean.java:

    @ManagedBean(name="locale")
@SessionScoped
public class LocaleBean {

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

public Locale getLocale() {
return locale;
}

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

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

JSF 部分(它是我模板的一部分):

    <h:outputText value=" #{text['common.language']}: " /> 
<h:selectOneMenu value="#{locale.language}" onchange="submit()">
<f:selectItem itemValue="de" itemLabel="Deutsch" />
<f:selectItem itemValue="en" itemLabel="English" />
</h:selectOneMenu>

faces-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<locale-config>
<default-locale>de</default-locale>
<supported-locale>en</supported-locale>
</locale-config>
<resource-bundle>
<base-name>org.dhbw.stg.wwi2008c.mopro.ui.text</base-name>
<var>text</var>
</resource-bundle>
</application>
</faces-config>

然后我从教程中获取 Text.java,只更改了包路径。

这是我的目录:

如果缺少重要的东西,请索取。

最佳答案

FacesContext 是请求范围的实例。因此您的值将仅为该特定请求设置。

添加到xhtml

<f:view locale="#{locale.locale}">

或:

注册一个 View Handler
在 faces-config.xml 中

 <application>
...
<view-handler>com.yourcompany.MyLocaleViewHandler</view-handler>

public class MyLocaleViewHandler extends ViewHandler {

private final ViewHandler base;


@Override
public Locale calculateLocale(FacesContext context) {
//fetch the session scoped bean and return the
LocaleBean bean = (LocaleBean ) context.getExternalContext().getRequest().getSession().getAttribute("locale");//this line is not tested.
return locale;
}
//other stuff..


}

关于java - JSF setLocale 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4745181/

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