有没有办法将html文件的内容插入Facelet模板? Facelets标记不起作用,因为它仅用于包含Facelet内容。
换句话说,我正在寻找与JSP包含指令<%@ include file="..." %>
等效的Facelets。
答案 0 :(得分:4)
我可能无法理解您的需求,但<ui:include>
并不局限于facelets内容,您可以根据this link插入有效的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内容。在facelets模板中使用<ui:include>
时也适用。
答案 1 :(得分:1)
Facelets中唯一包含的机制是,它不允许包含任意内容,只有格式良好的XML。 Facelets中没有与JSP include指令等效的东西。
答案 2 :(得分:1)
这描述了一个解决方案:http://arjan-tijms.omnifaces.org/2010/04/facelets-and-legacy-jsp.html
该解决方案包括构建一个简单的UI组件,该组件将JSP或Servlet内容加载到字符串中,并通过正常的响应编写器呈现。
答案 3 :(得分:1)
Omnifaces的<o:resourceInclude>
可用于将任意内容直接包含在响应中。这意味着它不必与<ui:include>
一样形成良好的xml。您也可以在JSF页面的<h:head>
部分中包含内容,否则很难实现。