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中,命名文件,使其以
结尾,不带引号,并将文件放在 jar文件“.taglib.xml”
注意:在
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));