【问题标题】:Include non-Facelet content in a Facelet template在 Facelet 模板中包含非 Facelet 内容
【发布时间】:2010-12-02 04:11:27
【问题描述】:

有没有办法将 html 文件的内容插入到 Facelet 模板中? Facelets 标签将不起作用,因为它仅用于包含 Facelet 内容。

换句话说,我正在寻找与 JSP 包含指令 <%@ include file="..." %> 等效的 Facelets。

【问题讨论】:

    标签: jsf facelets


    【解决方案1】:

    我可能不明白你需要什么,但是<ui:include>不限于facelets内容,你可以插入有效的xhtml,根据this link。

    考虑以下 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 模板中使用 &lt;ui:include&gt;。

    【讨论】:

    • 感谢您指出这一点。经过一番实验,我发现包含这样的html片段: foo bar 会产生错误:“Content is not allowed in prolog.”并包括这样的片段: foo bar 生成错误:“根元素之后的文档中的标记必须格式正确。”但这确实有效: foo bar 所以包含的内容 必须 是格式良好的 xml(但不一定是有效的 xml)。我是否正确假设 是 Facelets 中唯一的插入机制?
    • 据我所知,是的。也许您可以尝试使用其他一些机制,例如: - ,我现在无法确定它是否会起作用,但我对此表示怀疑。 - 还有 ,但 RichFaces 文档似乎暗示它与 具有相同的行为 - HTML“iframe”,但包含将由客户端完成。 - 将呈现文件内容的自定义 JSF 标记。
    【解决方案2】:

    Facelets 中唯一的包含机制是 ,它不允许包含任意内容,只能包含格式良好的 XML。 Facelets 中没有与 JSP 包含指令等效的指令。

    【讨论】:

      【解决方案3】:

      这描述了一个解决方案:http://arjan-tijms.omnifaces.org/2010/04/facelets-and-legacy-jsp.html

      该解决方案包括构建一个简单的 UI 组件,将 JSP 或 Servlet 内容加载到字符串中并通过正常的响应编写器呈现。

      【讨论】:

        【解决方案4】:

        Omnifaces 的&lt;o:resourceInclude&gt; 可用于将任意内容直接包含到响应中。这意味着它不必像&lt;ui:include&gt; 那样是格式良好的xml。您还可以在 JSF 页面的 &lt;h:head&gt; 部分中包含内容,否则很难实现。

        http://showcase.omnifaces.org/components/resourceInclude

        【讨论】:

          猜你喜欢
          • 2012-07-17
          • 1970-01-01
          • 2011-06-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-11
          • 2011-12-30
          相关资源
          最近更新 更多