如何在Facelets和web.xml中引用JAR中的Facelets标签库?

8

我正在使用Apache MyFaces Commons Validator标签库。

我应该如何将其添加到我的web.xml文件中?commons 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。

在正确获取依赖之后,一切都像往常一样工作,没有必要像balusC建议的那样显式定义taglib。谢谢!

<dependency>
    <groupId>org.apache.myfaces.commons</groupId>
    <artifactId>myfaces-commons</artifactId>
    <version>1.1.2</version>
</dependency>
1个回答

13
该库的*.taglib.xml文件已经位于JAR包的/META-INF中,因此无需将任何内容添加到web.xml中。如果JAR包在Web应用程序的运行时类路径中,则标签库将自动发现。请参见JSF 2规范第10.3.2章:

10.3.2 Facelet标记库机制

...

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

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

  • 通过自动发现,在Web应用程序类路径上放置标记库描述符文件的jar包中,命名该文件以“.taglib.xml”结尾(不带引号),并将文件放置在jar文件中的META-INF目录中。

...

所以你需要确保JAR包确实位于Web应用程序的运行时类路径中,通常是/WEB-INF/lib文件夹。

如果您在使用该库时遇到问题,原因不是您认为的那个问题。


嗨,BalusC,正如你所怀疑的那样,这是由于另一个问题引起的,你是正确的。谢谢! - OCB
2
不用客气。将来请尝试询问如何解决问题,而不是如何实现解决方案(这可能并不一定是您真正问题的正确解决方案)。 - BalusC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接