37.7. <ui:fragment>

表 37.7. 构件信息

属性是否必须描述示例
id一个可选的唯一id,如果省略,Facelets框架将使用某种全局算法自动分配一个。mainMenu
binding这个binding属性与普通JSF构件上的binding属性是一样的,允许你用来引用一个JavaBean上的一个属性。在创建构件树过程中,如果目标属性没有已经被赋值为一个UIComponent实例,JSF将惰性地(即在实际访问时才创建)为你创建一个实例,并把它赋值到 JavaBean的目标属性中,然后再继续创建构件树过程。mainMenu

正如composition有decorate标签与之对应,作为具有同样行为的“非截去”版本。fragment则是component标签的对应(非截去)版本。它允许你逻辑地把一个UIComponent插入到构件树中,并可选地把这个片段绑定到一个JavaBean属性中或Map中以便于管理。

前面的内容将保留.
<ui:fragment binding="#{uiCache['searchResult']}">
  <div id="searchResults">
    ...
  </div>
</ui:fragment>
后面的内容将保留.

fragment标签在Facelets框架中还可以用来绕过某些用来处理文本的优化策略。如果你使用了某些负责渲染自身子构件的构件,例如<f:panelGrid/>,你可能会希望对Facelets框架的创建(构件树)过程进行一些控制,使用fragment标签有助于保证构件间的父子关系。