jsf facelets模板的使用

<ui:composition> 指定使用哪个模版文件,然后通过 <ui:define> 对模版文件中每个可供插入的“ <ui:insert> 锚点”进行定义。 在运行期,具体的内容将会被插入到 <ui:composition> 中定义的锚点位置。
和 ui:component 一样,这个标签以外的内容将被编译器忽略 , 不会显示在视图中 , 和 ui:component 不同的是, ui:composition 不会在组件树上创建节点。

这里以及这里以前的内容将被忽略
<ui:composition>
<h:outputText value="#{bird.lifeExpectancy}" />
</ui:composition>
这里以及这里后的内容将被忽略

例如 :
<ui:composition template="bird-template.xhtml">
<ui:define name="title">Input Name</ui:define>
<ui:define name="summary">
<h:panelGrid columns="2">
<h:outputText value="Bird Name"/>
<h:outputText value="#{bird.name}"/> 34 Facelets Essentials
<h:outputText value="Life expectancy"/>
<h:outputText value="#{bird.lifeExpectancy}"/>
</h:panelGrid>
</ui:define>
</ui:composition>

这样 composition 标签内的内容按 bird-template.xhtml 模板文件的定义显示 , 模板文件中中必须有 <ui:insert name="title"> 和 <ui:insert name="summary"> 的定义。
创建一个组合视图主要使用 ui:composition, ui:define 和 ui:insert 标签。

ui:define 标签用于将命名的内容插入到模板中 , 它在模板标签(如 composition 和 decorate )的内部使用。 Define 的 name 属性必须和目标模板中 ui:insert 标签的 name 属性一致。

<ui:decorate> 标签和 <ui:composition> 标签相似,唯一不同的是它不忽略标签外部的内容。

ui:insert 标签用来在模板中指定一个插入点,可以被客户端模板中 ui:define 定义的内容所代替。

<ui:decorate template="box-template.xhtml">
<ui:define name="header">
Happy Parrot
</ui:define>
this will be removed
<ui:define name="content">
How many parrots do you want?
</ui:define>
</ui:decorate>

举例 2:
Listing 1-12. define-template.xhtml
<h:outputText value="Which bird sings like this? "/>
<ui:insert name="song"/>
define-example.xhtml
This will be ignored
<ui:composition template="define-template.xhtml">
<ui:define name="song">
<h:outputText value="cock-a-doodle-doo"/>
</ui:define>
</ui:composition>


你可能感兴趣的:(JSF)