在属性文件中添加二级数据



我的属性文件如下。

welcome.properties

admin = Admin
welcomeAdmin = Welcome Admin
editAdmin = Edit Admin

因为我有重复Admin这个词,我想用下面的东西。

admin = Admin
welcomeAdmin = Welcome #{admin}
editAdmin = Edit #{admin}

这样,如果我在一个地方改变,即在admin = Admin,它会反射所有的地方。

如果你有什么想法或建议,我将不胜感激

今天,经典的ResourceBundle类不支持命名参数及其替换,而是支持在包的键值对中使用{0}类型的简单占位符,这些占位符将被MessageFormat#format替换。

在这种情况下,如果您将Welcome #{admin}替换为Welcome {0},您将能够通过使用以下命令之一实现您所寻求的功能:

  1. JSF的<h:outputFormat> :

    <h:outputFormat value="#{msg.welcomeAdmin}">
        <f:param value="#{msg.admin}" />
    </h:outputFormat>
    
  2. JSTL's <fmt:message> :

    <fmt:message key="msg.welcomeAdmin">
        <fmt:param value="#{msg.admin}">
    </fmt:message>
    

您也可以创建自己的EL函数、标记处理程序或UI组件,或者在bean中使用MessageFormat类方法,等等。当然,您也可以扩展ResourceBundle类以支持命名参数,并返回已解析的命名参数的消息。

推荐阅读:

    Java中的资源包支持运行时字符串替换吗?
  1. 如何使用JSF组件的非value属性参数化MessageFormat;
  2. 将参数从资源包传递给组件,而不是h:outputFormat。

相关内容

  • 没有找到相关文章

最新更新