有两种方法可以将属性文件加载到 JSF 2.0 中。
- 全局资源包 全局加载属性文件,以便所有 jsf 页面都可以访问消息。您可以创建一个“faces-config.xml”文件并明确声明属性文件。
面孔-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<resource-bundle>
<base-name>com.mkyong.messages</base-name>
<var>msg</var>
</resource-bundle>
</application>
</faces-config>
选项 2:本地资源包 本地加载属性文件,或仅用于指定页面。在messages.properties中声明<f:loadBundle />
页面中需要访问消息的标签。
在这两个中,哪一个给我更好的性能?
假设我选择第一个选项,这是否意味着在应用程序启动期间加载了所有捆绑包,还是延迟加载?(一经请求)
如果选择第二个选项,是否可能导致每个 ViewRoot 多次加载捆绑包?
Java ResourceBundle 是在 servlet 容器中提供单例对象的工厂类吗?
我的意思是 getBundle 方法是始终创建单例对象的工厂方法?
ResourceBundle myResources =
ResourceBundle.getBundle("MyResources", currentLocale);
假设我有一个页面 abc.xhtml 并且我正在使用 f:loadBundle,并且有 1000 个用户访问此页面,这是否意味着将创建 1000 个 resouceBundle 对象?还是只有所有页面实例共享的对象?