Eclipse 找不到 JSF 2.2 taglibs

Eva*_*tti 4 java eclipse jsf

我正在使用 JSF 2.2 taglibs,但 Eclipse 显示以下警告消息:

找不到 uri http://xmlns.jcp.org/jsf 的facelet 标记库

问题是我以前遇到过这个问题,它与类路径 JAR 相关,但现在它只影响 JSF 2.2 标记库。

Taglibxmlns:h="http://xmlns.jcp.org/jsf/html"工作正常,警告显示给 JSF 2.2 细节,如"/jsf""/jsf/passthrough"。这是显示 JSF 2.2 警告的图像。标记库,但先前的命名空间已正确加载。

JSF 2.2 标签库的警告

我曾尝试与像帖子的帮助来解决这个问题,但没有手续(干净,重启,关闭/打开,验证,等等)都为我工作。

JSF 的依赖项(源自 WildFly 10.1 pom.xml):

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.2.13</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.2.13.SP1</version>
        <scope>provided</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

日蚀信息:

版本:Neon.1a 发布 (4.6.1)
版本号:20161007-1200

更新

在查看 taglib 文件后,我发现没有“直通”或“友好标记”参考。因此,Eclipse 找不到它也就不足为奇了……

com.sun.faces.metadata.taglib对于 Glassfish 和 JBoss 实现,在友好标记和传递下没有文件。

在此处输入图片说明

现在的问题是这些文件应该在哪里?

Eva*_*tti 5

更新:打开的问题WFLY-9579

对于 Glassfish 和 JBoss 项目,实现 JAR 中似乎缺少 taglib 文件。我希望是错的,但我找不到其他解释。

在此处输入图片说明

我已经发布了一个线程,因此可以调查此行为。

https://developer.jboss.org/thread/274046

解决方法

要阻止 IDE 发出警告,只需创建空的 taglibs 文件并将其关联到web.xml. 文件应该放在下面/WEB-INF/并具有适当的扩展名taglib.xml

JSF 实现将正常运行并且应该正确处理小面。

Friendly_markup.taglib.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
    version="2.2">
    <namespace>http://xmlns.jcp.org/jsf</namespace>
</facelet-taglib>
Run Code Online (Sandbox Code Playgroud)

传递.taglib.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<facelet-taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facelettaglibrary_2_2.xsd"
    version="2.2">
    <namespace>http://xmlns.jcp.org/jsf/passthrough</namespace>
</facelet-taglib>
Run Code Online (Sandbox Code Playgroud)

网页.xml

<context-param>
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/passthrough.taglib.xml;/WEB-INF/friendly_markup.taglib.xml</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

这是它的样子。现在警告消失了(我的强迫症又恢复了平静)。如果我有空闲时间,我想尝试为它添加 JAR 依赖项。

在此处输入图片说明