【问题标题】:Warning: This page calls for XML namespace http://xmlns.jcp.org/jsf/XXX declared with prefix XXX but no taglibrary exists for that namespace警告:此页面调用 XML 命名空间 http://xmlns.jcp.org/jsf/XXX 声明,前缀为 XXX,但该命名空间不存在标记库
【发布时间】:2015-08-31 04:24:33
【问题描述】:

我正在使用 Netbeans 8.02,它似乎了解它帮助我创建的复合组件。它位于 /resources/ezcomp 文件夹中(Nebeans 用于此的默认文件夹),如下所示:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:cc="http://xmlns.jcp.org/jsf/composite"
  xmlns:p="http://primefaces.org/ui"
  xmlns:h="http://xmlns.jcp.org/jsf/html"
  xmlns:f="http://xmlns.jcp.org/jsf/core">

<!-- INTERFACE -->
<cc:interface>
    <cc:attribute name="pobject"
                  type="test.database.UserItem"
                  required="true" />
</cc:interface>

<!-- IMPLEMENTATION -->
<cc:implementation>
    ...

当我编辑页面以使用该组件时,NetBeans 将其包含在其代码完成数据库中,并在页面上创建一个 xmlns 引用,如下所示。

xmlns:ezcomp="http://xmlns.jcp.org/jsf/composite/ezcomp"

问题是当 Mojarra 2.1.6 (Glassfish 3) 遇到此问题时,它会显示一条消息:

Warning: This page calls for XML namespace 
http://xmlns.jcp.org/jsf/composite/ezcomp declared with 
prefix ezcomp but no taglibrary exists for that namespace.

上次我这样做的时候,URL 是 java.sun.com,所以我猜我不在的时候这个行业会继续发展。如果我将 URL 更改为使用 java.sun.com,它会变成空指针异常。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: jsf netbeans glassfish-3 jsf-2.2 xml-namespaces


    【解决方案1】:

    http://xmlns.jcp.org/jsf/* 命名空间是自 JSF 2.2 以来的新名称。这些警告表明您实际上使用的是 JSF 2.0/2.1,或者已将您的项目配置为使用 JSF 2.0/2.1。

    如果您没有使用/定位 JSF 2.2,那么您根本不应该使用 JSF 2.2 引入的命名空间。在 JSF 2.0/2.1 中,XML 命名空间是 http://java.sun.com/jsf/*,如下所示。

    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:cc="http://java.sun.com/jsf/composite"
    >
    

    如果您确信自己实际使用的是 JSF 2.2,那么您需要在项目属性的某处配置目标 JSF 版本。在 Eclipse 中,您可以在 Project Facets 中找到它。下图为 2.0 版本。那你应该把它改成 2.2。

    如果您不能选择 JSF 2.2,那么 IDE 本身很可能需要更新。对于 Eclipse,JSF 2.2 支持是在 WTP 3.5 中添加的,它首先在 Eclipse 4.4 Luna 中引入。

    另见:

    【讨论】:

    • 但是当我将 URL 更改为 java.sun.com 时,它会得到一个空指针异常。
    • 这是一个不同的问题,没有看到堆栈跟踪就无法回答。
    • 好吧,我宁愿使用 JSF 2.2。我的 Glassfish 安装似乎有点过时了,而且还没有真正准备好 2.2。
    • 5 岁以上的 GF3 是 Java EE 6,这确实意味着 JSF 2.0/2.1。如果您可以控制目标容器,那么绝对值得升级。 GF4 (Java EE 7 + JSF 2.2) 已经推出 2 年多了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多