JSF 2.2でのHTML5サポート について読んだ後、Netbeansの新しいWebアプリケーションで作成されたテンプレートファイルで、以前のFaceletsバージョンと同じXHTMLDoctypeを見つけて驚いた。唯一の違いは、HTMLタグがJSF2.2で読み取ることです。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
、古いJSFバージョンでは次のようにではなく:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://Java.Sun.com/jsf/html">
HTML5の約束を念頭に置いてXHTMLを使い続けるのは少し間違っているようです。 「サーバーライブラリ」ではなく「登録ライブラリ」から選択した場合にのみ、2.2を使用するオプションがあります。これは、フレームワークバージョンがプロジェクトに適用される方法に影響しますか?
FaceletsはHTML5をサポートするにはXHTMLに依存しすぎていますか?
数年前のXHTMLの誇大宣伝の間に、多くの人がXHTMLの目的を誤解したようです。短編小説:チェック XHTML wikiページ 。注意深く読んでください。一言で言えば、Faceletsは、生成されたHTML出力で使用されているDoctypeをまったく気にしません。 FaceletsテンプレートでHTML5Doctypeを完全に細かく宣言できます。
NetbeansがデフォルトでXHTMLdoctypeを使用してドキュメントを準備するのに対し、最近ではHTML5が推奨されるdoctypeであるのは確かに残念です。私はNetbeansを使用していませんが、Eclipseでは、これらのテンプレートを簡単に編集したり、独自のテンプレートを作成したりすることもできます。 XHTMLDoctype全体をHTML5Doctypeに置き換えることができます。これらのテンプレートは、Web"HTMLファイル"エディター"テンプレートを介してIDE prefsで検索/作成できます。
JSF 2.2でのHTML5サポートは、特にHTML5Doctypeをサポートできることとは何の関係もないことに注意してください。それどころか、これは、レガシーJSPが使用されている場合でも、すべてのJSFバージョンでサポートされています。 JSPとFaceletsは、HTML出力を生成できるビューテクノロジであり、HTML5でも問題ありません。これは、次の密接に関連する回答でも詳しく説明されています。 HTML4/5でJSF + Faceletsを使用することは可能ですか?
代わりに、JSF 2.2でのHTML5サポートは、カスタムJSFコンポーネント属性を定義し、カスタムHTML要素をJSFコンポーネントに変換する可能性をカバーしています。これは、JSF2.1以前では不可能でした。カスタムJSFコンポーネント属性(HTML5推奨のdata-xxx
属性を含む)は、デフォルトの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" />
これは、生成されたHTML出力に実際に含まれるように<h:inputText>
サポートされていない属性autocorrect
になります。 Java EEチュートリアル )に示すように、a
の代わりにp
( "属性")のXML名前空間プレフィックスを使用することに注意してください。 =、PrimeFacesのデフォルトのXML名前空間プレフィックスp
と衝突するため。
カスタムHTML要素(HTML5要素を含む)をJSFコンポーネントに変換するには、jsf:id
などのjsf
属性を指定します。
<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サポート」は「カスタム属性サポート」のもう1つの流行語です。