【问题标题】:Put start and end tags in separate include files将开始和结束标签放在单独的包含文件中
【发布时间】:2015-05-22 10:29:36
【问题描述】:

我想将来自不同文件的 html 代码包含到我的main.xhtml 页面中。但这不适用于<ui:include>。因为代码被分开到不同的文件,这使得每个文件都有无效的html代码。

我的意思:

html1.html

<div>

html2.html

</div>

main.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui">

INCLUDE HTML1

<h:outputLabel value="blablabla" />

INCLUDE HTML2

</ui:composition>

有没有办法完成这个任务?

【问题讨论】:

  • 为什么要创建无效的 XHTML 文件?
  • @mplungjan,其实html1和html2的扩展名没有关系。我已经编辑了我的帖子并将它们制作为 html;)

标签: jsf jsf-2 facelets uiinclude


【解决方案1】:

这没有意义。不允许在单个 Facelet 文件中包含语法无效的 XML。此外,您不能通过&lt;ui:include&gt; 或任何&lt;ui:xxx&gt; 标签包含普通的HTML。这些必须是真正的 Facelet 组合(因此是语法上有效的 XML)。

我了解到您想控制包含模板的正文。在这种情况下,将它们放在一个模板文件中,&lt;ui:insert&gt; 代表您要插入正文的位置:

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
>
    <div>
        <ui:insert/>
    </div>
</ui:composition>   

然后,在上面使用&lt;ui:decorate&gt;

<ui:decorate template="html.xhtml">
    <h:outputText value="blablabla" />
</ui:decorate>

Note that &lt;h:outputLabel&gt; serves an entirely different purpose.

另见:

【讨论】:

    【解决方案2】:

    将您的代码分成更多文件,如下所示:

    include file1_before_div
    <div>
    include file1_after_div
    <h:outputLabel value="blablabla" />
    include file2_before_div_close
    </div>
    include file2_after_div_close
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 2012-04-01
      • 2016-05-24
      • 2016-10-31
      相关资源
      最近更新 更多