Предупреждение: эта страница вызывает пространство имен XML http://xmlns.jcp.org/jsf/XXX, объявленное с префиксом XXX, но для этого пространства имен не существует библиотеки тегов
Я использую 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, он превратится в исключение нулевого указателя.
У кого-нибудь есть идеи как это исправить?
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.