代码之家  ›  专栏  ›  技术社区  ›  Mateusz Dymczyk

找不到JSF2.0标记

  •  3
  • Mateusz Dymczyk  · 技术社区  · 14 年前

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

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

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

    我在每个.xhtml文件中都有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”,我是否遗漏了什么?

    这就是我得到的确切错误:

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

    @编辑:好吧,我的队友发现这是因为我们使用了一些外部facelets,我们必须等待richfaces4.0…

    2 回复  |  直到 14 年前
        1
  •  2
  •   pakore    14 年前

    您删除了旧的JSF1.2库了吗? 检查你的 WEB-INF/lib 以查看是否没有JSF 1.2 libs的跟踪。

    还请记住,您应该更新 faces-config 文件到2

    <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实现)

        2
  •  0
  •   Babu    14 年前

    请确认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 目录并确保在其中找到2.0 jar。

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