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

2024-02-16

我需要动态更新 JSF2.0 (Primefaces) 工具提示,而无需重新启动服务器。

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

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

任何想法或提示请。感谢您


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

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

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

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

to

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

简而言之,您需要推出自己的 ResourceBundle 类来支持各种语言环境。无需说明,但您需要覆盖ResourceBundle.getObject(java.lang.String) http://download.oracle.com/javase/6/docs/api/java/util/ResourceBundle.html#getObject%28java.lang.String%29方法,因为它是由ResourceBundleELResolver http://download.oracle.com/javaee/6/api/javax/el/ResourceBundleELResolver.html评估引用 ResourceBundles 的 EL 表达式时的实现。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在不重新启动服务器的情况下动态更新 JSF2.0 (Primefaces) 工具提示 的相关文章

随机推荐