Тип документа в JSF Mojarra

Какой тип документа следует использовать на страницах JSF? На днях я пытаюсь перейти с Mojarra 2.1.13 на 2.1.18, и кажется, что способ интерпретации типов документов изменился. В корневом шаблоне у меня есть следующий DOC TYPE

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Должен ли я также включать это?

<?xml version="1.0"?>

В композитах (которые используют этот шаблон) у меня был следующий тип документа

 <!DOCTYPE composite PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Но похоже, что Mojarra 2.1.18 на самом деле не поддерживает это. Также я не нашел этого ни в одном справочнике по JSF 2.0, это мы использовали в JSF 1.2. Если у меня есть этот тип документа на составной странице, он будет отображать составной тип документа вместо html, который находится в шаблоне. В результате стили css перепутались.

Итак, как правильно использовать типы документов в JSF 2.0. Или это проблемы с Мохаррой? Я не нашел никаких упоминаний об этом.


person lukas    schedule 02.04.2013    source источник
comment
Синтаксический анализ типа документа не работал в Mojarra 2.1.14, но должен быть исправлен в 2.1.17. Он должен использовать тип документа основного шаблона и игнорировать любые типы документов за пределами <ui:component|composition>. Вы действительно используете 2.1.18? Какая версия регистрируется при запуске? Вы пробовали текущую 2.1.20?   -  person BalusC    schedule 02.04.2013
comment
Он распечатывает это: Initializing Mojarra 2.1.18-jbossorg-1 20130205-1414 для контекста ''. Я использую JBoss EAP 6.1 Alpha1. Я не знаю, как обновить версию Mojarra для сервера JBoss. Они используют собственную сборку   -  person lukas    schedule 02.04.2013
comment
О, предоставленный JBoss? Как именно вы обновились? Вы также приняли во внимание API, а не только реализацию?   -  person BalusC    schedule 02.04.2013
comment
Я использую Mojarra по умолчанию, предоставленный JBoss EAP 6.1. Альфа1. Есть Мохарра 2.1.18.   -  person lukas    schedule 02.04.2013
comment
Итак, вы действительно перешли на более новую версию JBoss?   -  person BalusC    schedule 02.04.2013
comment
В любом случае, попробуйте предоставить свои собственные обновленные библиотеки Mojarra. Вы можете сообщить JBoss об этом, используя параметр контекста: exported-libraries-in-the-war/11911413#11911413" title="как настроить войну, чтобы она зависела от экспортированных библиотек в войне"> stackoverflow.com/questions/11908720/   -  person BalusC    schedule 02.04.2013
comment
Да это правильно. Я пытаюсь, но я имею дело со стабильностью JSF. На самом деле это еще хуже. Время от времени JSF выдает ошибку Duplicate ID, такую ​​как java.lang.IllegalStateException: ID компонента j_idt1 уже найден в представлении. Генерирует повторяющиеся идентификаторы для компонентов f:viewParam и s:viewAction.   -  person lukas    schedule 02.04.2013
comment
ну так я обновился до mojarra 2.1.19 и не помогло   -  person lukas    schedule 03.04.2013
comment
Я создал задачу JIRA здесь: java.net/jira/browse/JAVASERVERFACES-2820   -  person lukas    schedule 03.04.2013


Ответы (2)


Для этого я создал задачу JIRA: http://java.net/jira/browse/JAVASERVERFACES-2820

и он был закрыт, так как это ожидаемое поведение.

«Композитная страница — это место, где вы фактически используете шаблон. Таким образом, это самый внешний файл, в котором вы указали тип документа. Таким образом, он определяет тип документа, который будет отображаться».

Просто укажите тип документа в шаблоне и больше нигде

person lukas    schedule 19.04.2013
comment
В моем случае - если doctype только в шаблоне, больше нигде - у меня составной тип в представлении, даже если в шаблоне указан html :-( - person robson; 19.04.2013
comment
какую версию мохарры вы используете? - person lukas; 19.04.2013
comment
Если я нигде не включаю какой-либо тип документа, он отображается по умолчанию. Если я помещу тип документа только в шаблон, он будет отображаться. Если я помещу тип документа в составное представление, он будет отображаться (и он также переопределяет тип документа в шаблоне). Я использую Мохарру 2.1.19. - person lukas; 19.04.2013
comment
Я использую mojarra 2.1.18, и у меня такое поведение: если я помещаю доктайп в составное представление - он у меня будет на отображаемой странице. Если я не помещу тип документа в составное представление, у меня будет составной тип документа на отображаемой странице, даже если шаблон этой страницы имеет тип документа html. Похоже, что составной тип документа используется по умолчанию, а mojarra учитывает только составной вид. Может в 2.1.19 пофиксили? - person robson; 20.04.2013

Я также мигрировал с JBoss 7.1 на JBoss EAP 6.1.

Я нашел не очень красивый обходной путь - вставлять на каждую страницу (не в шаблон):

<!DOCTYPE html>

e. g.:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html" template="template.xhtml"> 

Есть ли другой способ чтения doctype из основного шаблона?

person robson    schedule 18.04.2013