来自JSF composite 标签库文档摘要 (强调我的):
composite
创建复合组件 默认实现必须支持创作。通过在资源库中创建Facelets2文件来声明复合组件。 ( 的 有关资源库的更多信息,请参阅规范起草文档的JSF.2.6部分。 强> )复合组件必须位于资源库中。如果不将其放在资源库中,则无法创建复合组件。
默认实现必须支持创作。通过在资源库中创建Facelets2文件来声明复合组件。 ( 的 有关资源库的更多信息,请参阅规范起草文档的JSF.2.6部分。 强> )复合组件必须位于资源库中。如果不将其放在资源库中,则无法创建复合组件。
来自第2.6节 JSF规范 :
2.6.1.2将资源打包到Classpath中 对于默认实现,类路径中打包的资源必须位于 JAR条目名称: META-INF/resources/<resourceIdentifier> 必须使用以下方法访问打包到类路径中的资源 getResource*() 的方法 ClassLoader 通过调用获得 getContextClassLoader() 当前的方法 Thread 。
对于默认实现,类路径中打包的资源必须位于 JAR条目名称:
META-INF/resources/<resourceIdentifier>
必须使用以下方法访问打包到类路径中的资源 getResource*() 的方法 ClassLoader 通过调用获得 getContextClassLoader() 当前的方法 Thread 。
getResource*()
ClassLoader
getContextClassLoader()
Thread
至此,所有复合组件必须进入 /META-INF/resources JAR的文件夹。它的处理方式与之相同 /WEB-INF/resources 在常规WAR中(因此您仍需要一个额外的子文件夹来表示复合组件的主命名空间)。
/META-INF/resources
/WEB-INF/resources
对于这种情况,如果JAR还包含带有JSF注释的类,例如 @ManagedBean 等等,那么JAR也必须兼容JSF 2.0 /META-INF/faces-config.xml 文件,以便触发JSF注释扫描程序为实现任何JSF注释的类抓取整个JAR。
@ManagedBean
/META-INF/faces-config.xml
至于Netbeans / Maven部分,抱歉我不知道因为我不使用它们。