Pet*_*ton 5 java jsf facelets internationalization
Facelets是否具有更整洁或更易读的国际化用户界面文本标签的任何功能,否则您可以使用JSF执行哪些操作?
例如,使用普通的JSF,使用h:outputFormat是一种在消息中插入变量的非常详细的方法.
澄清:我知道我可以添加一个消息文件条目,如下所示:
label.widget.count = You have a total of {0} widgets.
Run Code Online (Sandbox Code Playgroud)
并显示此(如果我使用Seam):
<h:outputFormat value="#{messages['label.widget.count']}">
<f:param value="#{widgetCount}"/>
</h:outputFormat>
Run Code Online (Sandbox Code Playgroud)
但输出一个句子很麻烦 - 只是给JSF一个坏名字的东西.
属性:
label.widget.count = You have a total of #{widgetCount} widgets.
Run Code Online (Sandbox Code Playgroud)
XHTML:
<h:outputFormat value="#{messages['label.widget.count']}" />
Run Code Online (Sandbox Code Playgroud)
这仍然使用outputFormat,但不那么冗长.
您可以创建自己的面孔标签库以使其不那么冗长,例如:
<ph:i18n key="label.widget.count" p0="#{widgetCount}"/>
Run Code Online (Sandbox Code Playgroud)
然后在您的视图目录中创建标签库:/components/ph.taglib.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE facelet-taglib PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" "https://facelets.dev.java.net/source/browse/*checkout*/facelets/src/etc/facelet-taglib_1_0.dtd">
<facelet-taglib xmlns="http://java.sun.com/JSF/Facelet">
<namespace>http://peterhilton.com/core</namespace>
<tag>
<tag-name>i18n</tag-name>
<source>i18n.xhtml</source>
</tag>
</facelet-taglib>
Run Code Online (Sandbox Code Playgroud)
创建/components/i18n.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:outputFormat value="#{messages[key]}">
<!-- crude but it works -->
<f:param value="#{p0}" />
<f:param value="#{p1}" />
<f:param value="#{p2}" />
<f:param value="#{p3}" />
</h:outputFormat>
</ui:composition>
Run Code Online (Sandbox Code Playgroud)
通过一些研究,您也许可以找到一种优雅的方式来传递论点。
现在在 web.xml 中注册您的新标签库
<context-param>
<param-name>facelets.LIBRARIES</param-name>
<param-value>
/components/ph.taglib.xml
</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
只需添加xmlns:ph="http://peterhilton.com/core"
您的视图即可完成!
归档时间: |
|
查看次数: |
4395 次 |
最近记录: |