我的组件库目录树的设置如下:

resources
    mylib
        css
            mycomponent.css
        properties
            mycomponent.properties
        mycomponent.xhtml


我想在mycomponent.xhtml中加载属性文件以用于消息。这样做的正确方法是什么?有f:loadbundle类型的解决方案吗?

最佳答案

复合组件通过#{cc.resourceBundleMap}隐式支持资源束。这仅需要:


捆绑文件与复合XHTML本身放在同一(子)文件夹中。
捆绑文件具有与复合XHTML本身完全相同的文件名(前缀)。


因此,如果您进行一些重组,

WebContent
 |-- resources
 |    `-- mylib
 |         |-- mycomponent.css
 |         |-- mycomponent.properties
 |         `-- mycomponent.xhtml
 :


然后,您应该可以按以下方式访问它:

<cc:implementation>
    <h:outputStylesheet library="mylib" name="mycomponent.css" />
    ...
    <p>Property with key "foo": #{cc.resourceBundleMap.foo}</p>
    <p>Property with key "foo.bar": #{cc.resourceBundleMap['foo.bar']}</p>
</cc:implementation>

10-06 09:08