Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 JSF2:如何在jsf-impl.jar中发现*.taglib.xml文件?_Jsf 2_Facelets_Taglib - Fatal编程技术网

Jsf 2 JSF2:如何在jsf-impl.jar中发现*.taglib.xml文件?

Jsf 2 JSF2:如何在jsf-impl.jar中发现*.taglib.xml文件?,jsf-2,facelets,taglib,Jsf 2,Facelets,Taglib,在jsf impl.jar(可在上找到)中,*.taglib.xml文件位于目录com/sun/faces/metadata/taglib/中 我不明白他们是如何在这种情况下被发现的,因为《公约》第10.3.2章说: 10.3.2 Facelet标签库机制 运行时必须支持Facelet标记库描述符的两种发现模式 按照第11.1.3节“应用程序配置参数”的规定,通过web.xml中的声明 通过自动发现,将标记库描述符文件放在web应用程序类路径的jar中,命名文件,使其以“.taglib.xm

jsf impl.jar
(可在上找到)中,
*.taglib.xml
文件位于目录
com/sun/faces/metadata/taglib/

我不明白他们是如何在这种情况下被发现的,因为《公约》第10.3.2章说:

10.3.2 Facelet标签库机制

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

  • 按照第11.1.3节“应用程序配置参数”的规定,通过web.xml中的声明

  • 通过自动发现,将标记库描述符文件放在web应用程序类路径的jar中,命名文件,使其以
    “.taglib.xml”
    结尾,不带引号,并将文件放在 jar文件

在这里,它们不在META-INF目录中,那么它是如何工作的呢


注意:在
META-INF
中,它们是一些
.tld
文件,但我对它们不感兴趣,因为我没有使用JSP作为视图,而是使用Facelets。

它没有为此使用
taglib.xml
。它通过编程方式注册它们,在启动过程中执行。以下是Mojarra 2.2.1中的相关行(复制粘贴自):


您知道是否有理由通过编程而不是使用
taglib.xml
?原因是它是一个容器JAR,而不是用户JAR。taglib.xml仅适用于/WEB-INF/lib中用户提供的JAR。
954        c.addTagLibrary(new CoreLibrary());
955        c.addTagLibrary(new CoreLibrary(CoreLibrary.XMLNSNamespace));
956        c.addTagLibrary(new HtmlLibrary());
957        c.addTagLibrary(new HtmlLibrary(HtmlLibrary.XMLNSNamespace));
958        c.addTagLibrary(new UILibrary());
959        c.addTagLibrary(new UILibrary(UILibrary.XMLNSNamespace));
960        c.addTagLibrary(new JstlCoreLibrary());
961        c.addTagLibrary(new JstlCoreLibrary(JstlCoreLibrary.IncorrectNamespace));
962        c.addTagLibrary(new JstlCoreLibrary(JstlCoreLibrary.XMLNSNamespace));
963        c.addTagLibrary(new PassThroughAttributeLibrary());
964        c.addTagLibrary(new PassThroughElementLibrary());
965        c.addTagLibrary(new FunctionLibrary(JstlFunction.class, FunctionLibrary.Namespace));
966        c.addTagLibrary(new FunctionLibrary(JstlFunction.class, FunctionLibrary.XMLNSNamespace));
967        if (isDevModeEnabled()) {
968            c.addTagLibrary(new FunctionLibrary(DevTools.class, DevTools.Namespace));
969            c.addTagLibrary(new FunctionLibrary(DevTools.class, DevTools.NewNamespace));
970        }
971        c.addTagLibrary(new CompositeLibrary());
972        c.addTagLibrary(new CompositeLibrary(CompositeLibrary.XMLNSNamespace));