如何将主体包含在标记文件中

时间:2015-01-29 11:58:26

标签: jsf facelets jsf-2.2 tagfile

我有一个我打算用作输入模板的标记文件:

<ui:composition
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    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 class="qr">
        <label>#{question}</label>
        <div class="helpButton"></div>
        <!-- body here -->
        <!-- errors output eventually to go here -->
    </div>

</ui:composition>

它存储在我的/WEB-INF/tags文件夹中,其中包含.taglib.xml和必需的web.xml上下文参数。

我知道它可以按如下方式使用:

<g:question question="What is your name?" id="firstname">
    <h:inputText value="#{bean.firstname}" />
</g:question>

目前这是最基本的形式。我打算使用各种复杂的输入。但是标签等的布局总是需要保持不变。

如何在标记文件中包含<g:question>的正文?

1 个答案:

答案 0 :(得分:2)

使用<ui:insert>

<ui:composition
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    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 class="qr">
        <label>#{question}</label>
        <div class="helpButton"></div>
        <ui:insert />
        <!-- errors output eventually to go here -->
    </div>

</ui:composition>

请注意,您甚至可以在标记文件上使用<ui:define name="..."><ui:insert name="...">,就像通常在模板上一样。