【问题标题】:How to update the JSF2.0 (Primefaces) tooltips dynamically without server restart如何在不重新启动服务器的情况下动态更新 JSF2.0 (Primefaces) 工具提示
【发布时间】:2011-07-12 06:05:09
【问题描述】:

我需要在不重新启动服务器的情况下动态更新 JSF2.0 (Primefaces) 工具提示。

意味着需要找到一种方法,可以在不需要重新启动服务器的情况下更改正在运行的应用程序的工具提示(来自属性文件的 atm)。

我们正在运行 websphere 并部署非爆炸 EAR(可能会说服部署爆炸战争)

请有任何想法或提示。谢谢你

【问题讨论】:

    标签: properties jsf-2 tooltip primefaces


    【解决方案1】:

    p:toolTip 组件的value 属性必须是 EL 表达式或文字文本。通常,人们会在工具提示的 EL 表达式中引用使用 f:loadBundle 标记的 var 属性声明的资源包。

    使用basename 属性声明的底层资源包可以由属性文件本身支持(在这种情况下,您需要将属性文件放在类路径上的适当目录中),或者就此而言,它可以是可以从属性文件(位于容器外部)或数据库或任何存储中读取的自定义 ResourceBundle 实现。

    因此,您可以将现有的 EL 表达式从定义为的现有表达式更改为:

    <f:loadBundle var="msg" basename="propfile_location" />
    

    <f:loadBundle var="msg" basename="fully qualified class name of the ResourceBundle class" />
    

    简单来说,您需要推出自己的 ResourceBundle 类来支持各种语言环境。无需说明,但您需要重写 ResourceBundle.getObject(java.lang.String) 方法,因为在评估引用 ResourceBundles 的 EL 表达式时,ResourceBundleELResolver 实现会调用它。

    此外,您需要确保您的 ResourceBundle 的 ResourceBundle.getObject(java.lang.String) 实现将始终重新获取并返回与提供的键对应的值。未能确保这一点意味着资源包获取的初始值可能会在后续调用中返回,尤其是在缓存初始值时。即使您部署了一个展开的 WAR 文件,您也可能会遇到这种行为,您可以在其中修改属性文件内容而无需重新部署应用程序,这就是为什么使用不缓存值的自定义 ResourceBundle 实现很重要。

    【讨论】:

      猜你喜欢
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多