JSF中的本地化,如何记住每个会话的选定区域设置而不是每个请求/视图
faces-config.xml
:
<application>
<locale-config>
<default-locale>ru</default-locale>
<supported-locale>ua</supported-locale>
</locale-config>
</application>
在bean操作方法中,我正在更改当前视图中的语言环境,如下所示:
FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale("ua"));
问题是应用了ua
Locale,但仅适用于每个请求/视图而不适用于会话。同一会话中的另一个请求/视图将语言环境重置为默认值ru
值。
如何应用会话的区域设置?
没有找到相关结果
已邀请:
5 个回复
闪脖
(这会更改当前视图的语言环境,从而反映在回发中;此部分不是在之后执行重定向时必需的)和在
的
属性中的一次(在后续请求/视图中设置/保留语言环境)。 以下是这样一个
应如何显示的示例:
以下是该视图的示例:
请注意,JSF的运行不需要
,但搜索机器人如何解释您的页面是强制性的。否则它可能被标记为重复内容,这对SEO是不利的。 有关: 使用UTF-8编码的属性文件在JSF 2.0中进行国际化
逆捐凶撤小
孝铜差
室邢
,它在后台bean中执行某些方法。通过该方法调用
可以获得的语言环境是由用户浏览器或默认应用程序语言环境设置的语言环境,而不是用户选择在会话bean上设置的语言环境(当然,如果浏览器语言环境等于用户选择的语言环境,它们可以匹配)。 我可以纠正,因为在实施@BalusC提供的解决方案时,我可能做错了。 编辑。在使用JSF生命周期后,这种使用语言环境的行为与
无关,因为与
也有类似的行为。请求中的
(在用户选择的区域设置之后)在渲染响应阶段执行。
和
方法在调用应用阶段执行。这就是为什么在此方法中执行的逻辑无法访问用户选择的区域设置的原因。 我们在需要正确的语言环境时使用的解决方案是在包含
和
方法的其他支持bean中注入(CDI)
,然后在这些方法的开头用
设置loc5ѭ的语言环境。
屠创氓读叔
以自动重置当前视图上的区域设置: