警告:此页面调用使用前缀 XXX 声明的 XML 命名空间 http://xmlns.jcp.org/jsf/XXX 但该命名空间不存在标记库

2024-05-14

我正在使用 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,它会变成空指针异常。

有人对如何解决这个问题有想法吗?


The 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 中你可以找到它项目方面。下图为2.0版本。那么你应该将其更改为 2.2。

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

也可以看看:

  • JSF 2.2 使用哪个 XML 命名空间 https://stackoverflow.com/questions/31068678/which-xml-namespace-to-use-with-jsf-2-2/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

警告:此页面调用使用前缀 XXX 声明的 XML 命名空间 http://xmlns.jcp.org/jsf/XXX 但该命名空间不存在标记库 的相关文章

随机推荐