了解jsf ui的目的:组成

时间:2011-06-29 17:51:54

标签: templates jsf facelets

以下内容的用处是什么?

<ui:composition template="template.xhtml">;

“在使用<ui:composition>的模板客户端页面中,标记范围之外的任何内容都将被忽略,并且不包含在呈现的输出中”(JavaServerFaces 2.0,完整参考,第61页)

由于<ui:define>之外的所有内容都被忽略了,为什么要放在那里呢?没有什么必须放在<ui:define>之外。

但是这样做,我得到的只是模板本身,只填充了一些“变量”部分。

似乎没什么大不了的。 我不明白的另一件事是,composition元素的template属性是可选的。如果没有引用模板,它代表模板客户端是什么?

1 个答案:

答案 0 :(得分:10)

  

以下内容的用处是什么?

<ui:composition template="template.xhtml">

通过这种方式,您可以声明使用具有占位符的基本模板来插入模板定义。这比反过来做的更有用。您需要一次又一次地在每个页面中包含页眉,页脚和/或菜单。使用模板,您无需执行此操作。它只是在模板中。


  

“在使用<ui:composition>的模板客户端页面中,标记范围之外的任何内容都将被忽略,并且不包含在呈现的输出中”(JavaServerFaces 2.0,完整参考,第61页)

     

既然外面的一切都被忽略了,为什么要把它放在那里?没有什么必须放在<ui:define>

之外

您不需要这样做。你为什么这样?好吧也许基础教程可以做到这一点,但这只是为了演示目的。 “这不会包含在渲染输出中”等等。另一方面,如果您碰巧使用可视化编辑器,那么<ui:composition> 以外的内容将被视为。另请参阅Is there a way to run a JSF page without building the whole project?


  

我不明白的另一件事是,composition元素的模板属性是可选的。如果没有对模板的引用,它会出现什么样的模板客户端?

一个简单的包含文件,您可以<ui:include>包含该文件。

另见: