我所拥有的属性文件如下所示。
admin = Admin
welcomeAdmin = Welcome Admin
editAdmin = Edit Admin
因为我有重复的管理字,我想使用类似下面的内容。
admin = Admin
welcomeAdmin = Welcome #{admin}
editAdmin = Edit #{admin}
因此,如果我在一个地方改变,即在admin = Admin
改变,它将反映的所有地方。
任何想法/建议如何完成这项工作将不胜感激。
答案 0 :(得分:0)
按照今天的说法,经典的ResourceBundle
类不支持命名参数及其替换,而是在您的包的键值对中支持{0}
类型的简单占位符,用MessageFormat#format
代替。
有鉴于此,如果您将Welcome #{admin}
替换为Welcome {0}
,则可以使用以下方法之一来实现您所寻求的功能:
JSF&#39; <h:outputFormat>
:
<h:outputFormat value="#{msg.welcomeAdmin}">
<f:param value="#{msg.admin}" />
</h:outputFormat>
JSTL&#39; <fmt:message>
:
<fmt:message key="msg.welcomeAdmin">
<fmt:param value="#{msg.admin}">
</fmt:message>
您也可以创建自己的EL函数,标记处理程序或UI组件,或者在bean中使用MessageFormat
类方法等。当然,您也可以扩展ResourceBundle
用于支持命名参数的类,并返回已解析已命名参数的消息。
建议阅读: