ser*_*nni 43 session jsf localization internationalization jsf-2
faces-config.xml
:
<application>
<locale-config>
<default-locale>ru</default-locale>
<supported-locale>ua</supported-locale>
</locale-config>
</application>
Run Code Online (Sandbox Code Playgroud)
在bean操作方法中,我正在更改当前视图中的语言环境,如下所示:
FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale("ua"));
Run Code Online (Sandbox Code Playgroud)
问题是应用了ua
Locale,但仅适用于每个请求/视图而不适用于会话.同一会话中的另一个请求/视图将语言环境重置为默认ru
值.
如何应用会话的区域设置?
Bal*_*usC 81
您需要将所选区域设置存储在会话范围中,并在视图中将其设置在两个位置:一次UIViewRoot#setLocale()
在更改区域设置后立即(更改当前视图的区域设置,从而反映在回发中;此部分不是必需的)当你在之后执行重定向时)和一次locale
属性<f:view>
(在后续请求/视图中设置/保留语言环境).
这是一个如何LocaleBean
看起来像这样的例子:
package com.example.faces;
import java.util.Locale;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
@ManagedBean
@SessionScoped
public class LocaleBean {
private Locale locale;
@PostConstruct
public void init() {
locale = FacesContext.getCurrentInstance().getExternalContext().getRequestLocale();
}
public Locale getLocale() {
return locale;
}
public String getLanguage() {
return locale.getLanguage();
}
public void setLanguage(String language) {
locale = new Locale(language);
FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
}
}
Run Code Online (Sandbox Code Playgroud)
以下是该视图的示例:
<!DOCTYPE html>
<html lang="#{localeBean.language}"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<f:view locale="#{localeBean.locale}">
<h:head>
<title>JSF/Facelets i18n example</title>
</h:head>
<h:body>
<h:form>
<h:selectOneMenu value="#{localeBean.language}" onchange="submit()">
<f:selectItem itemValue="en" itemLabel="English" />
<f:selectItem itemValue="nl" itemLabel="Nederlands" />
<f:selectItem itemValue="es" itemLabel="Español" />
</h:selectOneMenu>
</h:form>
<p><h:outputText value="#{text['some.text']}" /></p>
</h:body>
</f:view>
</html>
Run Code Online (Sandbox Code Playgroud)
请注意,<html lang>
JSF的运行不是必需的,但搜索机器人如何解释您的页面是必需的.否则它可能被标记为重复内容,这对SEO是不利的.
归档时间: |
|
查看次数: |
47575 次 |
最近记录: |