Ответ 1
Кажется, вы неправильно поняли цель XHTML, как и многие люди во время перевыбора XHTML пару лет назад. Короче говоря: проверьте нашу страницу вики XHTML. Внимательно прочитайте это. В двух словах, Facelets абсолютно не заботится о том, чтобы doctype использовался в сгенерированном HTML-выходе. Вы можете отлично описать HTML-тип HTML5 в шаблоне Facelets.
На самом деле, к сожалению, Netbeans по умолчанию готовит документ с помощью доктрины XHTML, в то время как HTML5 в наши дни является рекомендуемым типом doctype. Я не делаю Netbeans, но в Eclipse вы можете легко редактировать эти шаблоны и даже создавать свои собственные. Вы можете просто заменить весь документ типа XHTML на HTML5. Вы можете найти/создать эти шаблоны через Web "HTML файлы" Редактор "Шаблоны в префиксах IDE.
Обратите внимание, что поддержка HTML5 в JSF 2.2 не имеет никакого отношения к тому, чтобы поддерживать конкретный тип документа HTML5. Напротив, это поддерживается во всех версиях JSF, даже если используется старый JSP. JSP и Facelets - это технологии просмотра, которые позволяют генерировать HTML-вывод, который вполне может быть хорошим HTML5. Это также объясняется следующим близким ответом: Можно ли использовать JSF + Facelets с HTML 4/5?
Вместо этого поддержка HTML5 в JSF 2.2 охватывает возможность определения пользовательских атрибутов компонента JSF и включения пользовательских элементов HTML в компоненты JSF. Это было невозможно в JSF 2.1 и ранее. Любые пользовательские атрибуты компонента JSF (включая атрибуты data-xxx
, рекомендованные HTML5) были просто проигнорированы рендерами JSF по умолчанию. См. Также следующий ответ: Пользовательские атрибуты HTML-тегов не отображаются JSF. В JSF 2.2 вы можете легко указать пользовательские атрибуты с помощью нового пространства имен http://xmlns.jcp.org/jsf/passthrough
следующим образом:
<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
...
<h:inputText ... a:autocorrect="off" />
В конце будет неподдерживаемый атрибут autocorrect
, который фактически будет включен в сгенерированный вывод HTML. Обратите внимание, что я использую префикс пространства имен XML a
( "attribute" ) вместо p
, как показано в учебнике Java EE, поскольку в противном случае он столкнулся с префиксом пространства имен XML по умолчанию p
в PrimeFaces.
Включение пользовательских элементов HTML (включая элементы HTML5) в компоненты JSF - это вопрос о атрибуте jsf
, таком как jsf:id
.
<html ... xmlns:jsf="http://xmlns.jcp.org/jsf">
...
<header jsf:id="header">...</header>
<main jsf:id="main">...</main>
<footer jsf:id="footer">...</footer>
Те, кто под крышками, будут превращены в UIPanel
(например, как <h:panelGroup>
). И да, они являются ссылочными, например, <f:ajax render>
.
Другими словами, "поддержка HTML5" снова является еще одним модным словом для "Поддержка пользовательских атрибутов".