未找到 JSF2.0 标记

Posted

技术标签:

【中文标题】未找到 JSF2.0 标记【英文标题】:JSF2.0 tags not found 【发布时间】:2011-03-18 20:20:08 【问题描述】:

最近我一直在玩 JSF2.0+Richface 3.3.3,我使用 STS 作为我的 IDE 和 Maven 来构建我的项目,但不知何故我无法让以下 JSF2.0 标记工作:

h:按钮 h:链接 f:元数据 f:viewParam(这是我的 STS 自动完成功能唯一识别的)

它只是在运行时失败,说它找不到 X 组件。

我确实有 jsf-api-2.0.2、jsf-impl-2.0.2、richfaces-api-3.3.3.final、richfaces-impl-jsf2-3.3.3.final、richfaces-ui-3.3。 3.final, jsf-facelets-1.1.15, jstl-1.0 显然是 "xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun. com/jsf/html" 在每个 .xhtml 文件中,我是否遗漏了什么?

这是我得到的确切错误:

<h:button> Tag Library supports namespace: http://java.sun.com/jsf/html, but no tag was defined for name: button

@EDIT:好吧,没关系,我的队友发现这是因为我们使用了一些外部 facelets,我们必须等待 RichFaces4.0...

【问题讨论】:

【参考方案1】:

您能否确认您的 maven pom.xml 文件具有以下依赖项:

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.0.2</version>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.0.2</version>
    </dependency>

在您的项目目录上完成mvn clean install 后,在target 目录中搜索jsf jar 文件并确保在那里找到2.0 jar。

如果问题仍未解决,请说明您正在使用的 Web 容器以及您的战争如何部署到服务器中。

【讨论】:

【参考方案2】:

您是否删除了旧的 jsf 1.2 库? 检查您的 WEB-INF/lib 以查看没有 JSF 1.2 库的痕迹。

还请记住,您应该将 faces-config 文件更新为 2.0

<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">

启动 servlet 时是否说明了什么:INFO: Initializing Mojarra 2.0.2 (FCS b10) for context '/nameofyourapplication'(如果您使用的是 JSF 的 Sun 实现)

【讨论】:

以防万一我仔细检查并且我没有 JSF1.2 库,并且 faces-config 也很好而且花花公子。哦,在初始化 Mojarra 时它什么也没说(当然除了它正在初始化)。有点奇怪,因为我在 google 中找不到有关此错误的任何信息。 尝试清理项目,也许你在某处缓存了库。 尝试将 .war 部署到 Tomcat 等 servlet 容器中,看看是否仍然出现同样的错误。 你在使用 Mojarra 实现吗?还是 Apache MyFaces?可以打开.jar看看里面是否实现了标签。 @Zenzen:您一定在服务器日志中看到了Initializing Mojarra 条目。你看对地方了吗?您使用的是哪个服务器?

以上是关于未找到 JSF2.0 标记的主要内容,如果未能解决你的问题,请参考以下文章

未找到 EOF 标记 - 如何在 PyPDF 和 PyPDF2 中修复?

呈现问题:二进制 XML 文件行 #-1:未找到开始标记

通过未标记为 cascade PERSIST 的关系找到了一个新对象

未找到 Content-Security-Policy 元标记错误

JPA,已经持久化的对象给出了“通过未标记级联 PERSIST 的关系找到了一个新对象”

“未找到 Content-Security-Policy 元标记。”我的 phonegap 应用程序中的错误