Должны ли пространства имен XML быть эффективными в шаблонном клиенте? - PullRequest
0 голосов
/ 26 декабря 2011

Это не главная проблема, но я просто хочу улучшить свое понимание спецификаций.

Я начал использовать ui: состав в качестве корневого элемента моих страниц JSF. Когда мой шаблон начинает использовать библиотеки тегов, которые НЕ находятся в клиенте, я получаю предупреждающие сообщения на отображаемой странице.

Итак, мастер Netbeans дает мне следующее:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
            template="./template.xhtml">

<ui:define name="content">
    <h1>A simple page</h1>
    <p>
        Hi there.
    </p>
</ui:define>

А на отображаемой странице показано:

Warning: This page calls for XML namespace declared with prefix p but no taglibrary exists for that namespace.
Warning: This page calls for XML namespace declared with prefix h1 but no taglibrary exists for that namespace. 

Итак, я добавляю объявления xmlns , и все в порядке, но так ли это должно работать? Если нет, является ли разрыв со спецификацией JSF, спецификацией XML или просто реализацией Mojarra, или ничего из вышеперечисленного?

Ответы [ 2 ]

1 голос
/ 26 декабря 2011

но так ли это должно работать?

Да.JSF (и в частности Facelets) использует старый добрый XML.И клиент шаблона, и определение шаблона являются документами XML, поэтому оба должны указывать пространства имен своих элементов в соответствии со спецификацией XML.Иными словами, синтаксический анализатор XML не знает, что анализируемый документ позднее будет интерпретирован JSF как определение шаблона клиента, но анализирует его как «просто другой документ».

1 голос
/ 26 декабря 2011

Это похоже на обычный код Java.Если вы хотите использовать какие-либо классы, вы должны объявить, импортировав их библиотеку.Пространство имен XML - это просто то, что вам нужно включить, чтобы объявить библиотеки тегов, которые вы собираетесь использовать.Абсолютно нормально, что пространство имен XML эффективно в клиентах шаблонов.

Кроме того, если вы используете <ui:composition> в качестве корневого элемента, вы не должны использовать обычные теги HTML.Вместо этого вы должны изменить их на эквивалентные теги JSF.Если вам нужно использовать теги HTML, используйте <html> в качестве корневого элемента, и предупреждение исчезнет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...