Избегайте использования нескольких тегов DOCTYPE и html при использовании пользовательского интерфейса: include - PullRequest
3 голосов
/ 18 августа 2011

мы используем несколько тегов ui:include на главной странице. Страница, которая должна быть включена, выглядит следующим образом:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=".." xmlns:ui="..." ...>
    <ui:fragment rendered="${foo}">
       some html code
    </ui:fragement>
    <ui:fragment rendered="${!foo || bar}">
       some more html code
    </ui:fragement>
</html>

Использование ui:include для шаблонов приводит к повторению тегов DOCTYPE и html в исходном коде несколько раз, что довольно уродливо. (Конечно, пользователь не видит, но я фанат аккуратного HTML)

Однако, если я удаляю тег DOCTYPE и html из x-html, который будет включен, сервлет Faces выдает исключение, указывающее, что префикс ui для ui:fragment не связан.

Кто-нибудь знает, как я могу включить другую XHTML-страницу без кратных DOCTYPE с и html с?

1 Ответ

3 голосов
/ 18 августа 2011

Вы должны взглянуть на тег ui: состав. Мы также используем ui: include для включения страниц jsf2, и для решения возникшей проблемы, я полагаю, вы можете изменить включенную страницу, добавив тег ui: состав следующим образом:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=".." xmlns:ui="..." ...>
    <ui:composition>
    <ui:fragment rendered="${foo}">
       some html code
    </ui:fragement>
    <ui:fragment rendered="${!foo || bar}">
       some more html code
    </ui:fragement>
    </ui:composition>
</html>
...