Jsf 2 使用通配符加载facelet标记库
我将JSF2与我自己构建的facelet标记一起使用,并且在名为xxxx.taglib.xml的taglib文件中定义了这些标记。该项目分为war模块,在构建时由Maven合并。因此,每个项目都有自己的标记库,我希望所有标记库都包含在结果项目中。这就是问题所在,是否有一种方法可以使用通配符,使用web.xml中的单个表达式访问每个taglib文件?与此类似:Jsf 2 使用通配符加载facelet标记库,jsf-2,tomcat6,facelets,Jsf 2,Tomcat6,Facelets,我将JSF2与我自己构建的facelet标记一起使用,并且在名为xxxx.taglib.xml的taglib文件中定义了这些标记。该项目分为war模块,在构建时由Maven合并。因此,每个项目都有自己的标记库,我希望所有标记库都包含在结果项目中。这就是问题所在,是否有一种方法可以使用通配符,使用web.xml中的单个表达式访问每个taglib文件?与此类似: <context-param> <param-name>facelets.LIBRARIES</pa
<context-param>
<param-name>facelets.LIBRARIES</param-name>
<param-value>classpath*:**/*.taglib.xml</param-value>
</context-param>
facelets.LIBRARIES
类路径*:***/*.taglib.xml
这将从/WEB-INF/classes目录中加载以.taglib.xml结尾的每个文件,但它不起作用。我正在使用Tomcat6。我遗漏了什么?这是无效的语法。它必须是webcontent相对路径,以分号分隔。您的项目和模块/构建设置可能不完全正确 只需在
/WEB-INF/lib
中创建一个独立的Java项目,并将taglib文件放在/META-INF
文件夹中。如果存在/META-INF/*.taglib.xml
,JSF还将扫描/WEB-INF/lib
中的每个JAR,然后自动注册它。您不需要为此使用facelets.LIBRARIES
context参数。将web资源(如XHTML文件)放入/META-INF/resources
文件夹中。请注意,这也是PrimeFaces等组件库的工作原理
您可能需要更改Maven来修复错误的构建方法。它应该构建模块项目的JAR,并将它们放在目标WAR文件的/WEB-INF/lib
中,绝对不要将独立项目的松散文件合并/覆盖在一个大的/WEB-INF/classes
文件夹中
顺便说一下,facelets.LIBRARIES
是特定于facelets 1.x的,在JSF2.x中不推荐使用。改用javax.faces.FACELETS\u库
另见: