3

这是我理解的摘要:

ui:decorate

  1. 可以使用ui:define
  2. 可以使用ui:param
  3. 可以有外部内容

ui:composition

  1. 可以使用ui:define
  2. 可以使用ui:param
  3. -> 不能有外部内容

ui:include

  1. -> 不能使用ui:define
  2. 可以使用ui:param
  3. 可以有外部内容

假设这些,我可以使用

ui:decorate作为ui:composition

<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">

    <!-- no content here -->

    <ui:decorate template="templates/page.xhtml">
        <ui:define name="test">
            <h:outputText value="#{someBean.someProperty}"/>
        </ui:define>
    </ui:decorate>

    <!-- no content here -->
</html>

ui:decorate作为ui:include

<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">

    <h:panelGroup>...</h:panelGroup>

    <ui:decorate template="fragments/page.xhtml">
        <ui:param name="test" value="#{someBean.someProperty}"/>
    </ui:decorate>

    <h:panelGroup>...</h:panelGroup>
</html>

所以,我错过了什么吗?误解?

如果我是对的,为什么有 3 个不同的组件?(如果我是对的,请不要说它们用于不同的目标)

4

0 回答 0