警告:此页面调用以前缀XXX声明的XML名称空间http://xmlns.jcp.org/jsf/XXX,但该名称空间不存在taglibrary

时间:2015-06-15 15:31:32

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

我正在使用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.

上次我这样做的时候,网址是java.sun.com,所以我想在我不在的时候这个行业继续前进。如果我更改URL以使用java.sun.com,它将变为Null指针异常。

任何人都有关于如何解决这个问题的想法?

1 个答案:

答案 0 :(得分: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。

enter image description here

如果您不能选择JSF 2.2,那么IDE本身很可能需要更新。在Eclipse的情况下,在WTP 3.5中添加了JSF 2.2支持,这在Eclipse 4.4 Luna中首次引入。

另见: