如何在Facelets和web.xml中引用JAR中的Facelets taglib?

时间:2011-11-20 03:51:38

标签: jsf facelets taglib myfaces

我正在使用Apache MyFaces Commons Validator TagLib。

我应该如何将其添加到我的web.xml中?公共JAR通过Maven下载并解决。

XHTML(我认为这是正确的):

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      **xmlns:mcv="http://myfaces.apache.org/commons/validators"**>

的web.xml:

<context-param>
  <!-- To add additional tab libs -->
  <param-name>facelets.LIBRARIES</param-name>
  <param-value>??.xml</param-value>
</context-param>

编辑:我之所以采取这一步是因为我试图错误地引用了Maven依赖关系,并且这样做,我试图从Apache下载jar并托管它我自己的存储库经理。我试图自己托管的jar不包含taglib jar。

在正确获得依赖关系之后,一切都按照正常情况工作,没有必要明确定义taglib作为balusC所赞扬的内容。 Thankx!

<dependency>
    <groupId>org.apache.myfaces.commons</groupId>
    <artifactId>myfaces-commons</artifactId>
    <version>1.1.2</version>
</dependency>

1 个答案:

答案 0 :(得分:12)

该库的*.taglib.xml文件已在JAR的/META-INF中。您无需向web.xml添加任何内容。如果JAR位于webapp的运行时类路径中,则将自动发现taglib。另见JSF 2 specification的第10.3.2节:

  

10.3.2 Facelet标签库机制

     

...

     

运行时必须支持Facelet标记库描述符的两种发现模式

     
      
  • 通过web.xml中的声明,如第11.1.3节“应用程序配置参数”中所述

  •   
  • 通过将标记库discriptor文件放在Web应用程序类路径的jar中来进行自动发现,命名文件使其以“.taglib.xml”结束,不带引号,并将文件放在{ {1}}中的目录   jar文件。

  •   
     

...

所以你需要确保JAR确实在webapp的运行时类路径中 - 通常是META-INF文件夹。

如果您在使用该库时遇到问题,则会由您认为的其他原因引起。