Предупреждение. Эта страница требует пространства имен XML http://xmlns.jcp.org/jsf/XXX с префиксом XXX, но для этого пространства имен не существует taglibrary

Я использую 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, он превратится в исключение Null-указателя.

У кого-нибудь есть идеи, как это исправить?

Ответ 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 поддержка JSF 2.2 была добавлена ​​в WTP 3.5, которая впервые появилась в Eclipse 4.4 Luna.

См. также: