HTMLファイルのコンテンツをFaceletテンプレートに挿入する方法はありますか? Facelets タグは、Facelet コンテンツを含めるためだけのものであるため、機能しません。
別の言い方をすれば、JSP の include ディレクティブに相当する Facelets を探しています<%@ include file="..." %>
。
必要なものがわからない場合がありますが、 faceletsコンテンツに限定されるものではなく、このリンク<ui:include>
に従って、有効なxhtmlを挿入できます。
次のfaceletsファイル(test.jsp)を検討してください。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<body>
<f:view>
<h:outputText value="Text outside include"/>
<ui:include src="testinclude.html"/>
</f:view>
</body>
</html>
そして次のHTMLファイル(testinclude.html):
<h2>Text from included page</h2>
ページにHTMLコンテンツが正しく含まれています。これ<ui:include>
は、ファセットテンプレートで使用する場合にも当てはまります。
Omnifaces<o:resourceInclude>
を使用して、任意のコンテンツを直接応答に含めることができます。つまり、.xml のように整形式の xml である必要はありません<ui:include>
。また、JSF ページのセクションにコンテンツを含めることもできます<h:head>
。これは、他の方法では実現が困難です。
Facelets の唯一のインクルード メカニズムは です。これは、任意のコンテンツを含めることを許可せず、適切にフォーマットされた XML のみを含めます。Facelets には、JSP の include ディレクティブに相当するものはありません。
これはこれに対する解決策を説明しています: http://arjan-tijms.omnifaces.org/2010/04/facelets-and-legacy-jsp.html
このソリューションには、JSP またはサーブレットのコンテンツを文字列にロードし、通常の応答ライターを介してレンダリングする単純な UI コンポーネントの構築が含まれます。