我正在我的工作场所工作JSF2.2。我的faces-config.xml有资源包标签,它可以帮助我将一个变量分配给一个属性文件并在EL中使用该变量。
<resource-bundle>
<base-name>properties.common</base-name>
<var>prop</var>
</resource-bundle>
我还发现了另一种通过使用f:loadBundle标记来实现这一目标的方法
<f:loadBundle basename="properties.common" var="prop"/>
但这是一个本地化的解决方案,这意味着我必须在每一页都写出来。
如果我在模板中定义它,这会有用吗?如果是的话,我该如何实现它。
有没有其他方法可以使用要在EL中使用的变量全局声明资源(例如faces-config.xml)
答案 0 :(得分:1)
如果我在模板中定义它,这会有用吗?
是。
如果是,我该如何实现它。
就像你说的一样。在模板中定义它。
还有其他方法我可以使用要在EL中使用的变量全局声明资源(例如faces-config.xml)
将它放在请求映射中,自己在视图中引用的请求范围bean的(post)构造函数中。
ResourceBundle bundle = ResourceBundle.getBundle("properties.common", facesContext.getViewRoot().getLocale());
externalContext.getRequestMap().put("prop", bundle);
它甚至可以作为请求范围bean的属性引用,这保证了bean的构造,即使它没有在视图中的其他位置引用。
答案 1 :(得分:0)
这正是我想要的,请参阅我的帖子https://stackoverflow.com/questions/24461307/jsf-2-external-resource-bundle
ResourceBundle bundle = ResourceBundle.getBundle("properties.common",facesContext.getViewRoot().getLocale());
externalContext.getRequestMap().put("prop", bundle);
感谢所有......