当浏览器的 Accept-Language 在我的 JSF 应用程序中是阿拉伯语时,我想在 inputText 中呈现文本方向 rtl(从右到左)。当 Accept-Language 为英语时,用户介绍的文本将是 dir="ltr"(从左到右)。我该怎么做?
问问题
1507 次
1 回答
6
客户端Accept-Language
可以通过 间接获得UIViewRoot#getLocale()
。在UIViewRoot
EL 中又可以作为#{view}
. 所以,这应该这样做:
<h:inputText ... dir="#{view.locale.language eq 'ar' ? 'rtl' : 'ltr'}" />
请注意,所有其他组件和dir
HTML 元素也支持.<h:form>
<html>
<html ... dir="#{view.locale.language eq 'ar' ? 'rtl' : 'ltr'}">
除非被不同的 set 覆盖,否则它将应用于其所有子级dir
。这将使您免于在所有子组件/元素上重复相同的属性。
另请注意,JSF 将仅接受在 中显式注册的语言<locale-config>
环境faces-config.xml
。因此,如果您还没有其中的内容,那么无论标题ar
如何,上述内容都将不起作用。Accept-Language
<application>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>ar</supported-locale>
...
</locale-config>
</application>
如有必要,将逻辑移动到托管 bean,以便您最终可以如下所示:
<h:inputText ... dir="#{localeManager.dir}" />
也可以看看:
于 2015-06-03T20:35:09.807 回答