警告:此页面要求使用前缀 XXX 声明的 XML 命名空间 http://xmlns.jcp.org/jsf/XXX 但该命名空间不存在标签库
Warning: This page calls for XML namespace http://xmlns.jcp.org/jsf/XXX declared with prefix XXX but no taglibrary exists for that namespace
我正在使用 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 它会变成空指针异常。
有人知道如何解决这个问题吗?
http://xmlns.jcp.org/jsf/*
命名空间是自 JSF 2.2 以来新增的。这些警告表明您实际上正在使用 JSF 2.0/2.1,或者已将您的项目配置为使用 JSF 2.0/2.1。
如果您不是 using/targeting 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。
如果您不能 select JSF 2.2,那么 IDE 本身很可能需要更新。对于 Eclipse,在 WTP 3.5 中添加了 JSF 2.2 支持,该支持首先在 Eclipse 4.4 Luna 中引入。
另请参阅:
我正在使用 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 它会变成空指针异常。
有人知道如何解决这个问题吗?
http://xmlns.jcp.org/jsf/*
命名空间是自 JSF 2.2 以来新增的。这些警告表明您实际上正在使用 JSF 2.0/2.1,或者已将您的项目配置为使用 JSF 2.0/2.1。
如果您不是 using/targeting 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。
如果您不能 select JSF 2.2,那么 IDE 本身很可能需要更新。对于 Eclipse,在 WTP 3.5 中添加了 JSF 2.2 支持,该支持首先在 Eclipse 4.4 Luna 中引入。