facelets的ui:include和custom标签有什么区别?

时间:2011-03-12 09:07:48

标签: facelets

Ui:include和基于xhtml的标签(带有elt的标签)对我来说似乎大致相同。两者都允许重用一段标记。但我相信每个人应该有一些理由。有人可以简要解释一下吗? (我想如果我阅读完整的facelets教程我将学习它,但我现在没有时间去做,所以没有链接到冗长的文档请:)

1 个答案:

答案 0 :(得分:3)

他们非常相似。差异主要是语法上的。

在观察它们的使用一段时间后,似乎惯例是你只在一种情况下使用的片段是ui的候选:include,而你经常重复使用且具有更独立语义的片段是候选者自定义标记。

E.g。

单个视图可能包含三个部分的表单;个人数据,工作经历,偏好。如果页面变得笨重,您可以将其分成较小的部分。 3个部分中的每个部分都可以移动到自己的Facelet文件中,然后将其包含在原始文件中。

另一方面,您可能有一种特定的方式在应用程序中的许多视图上显示图像。也许你在它周围画一条线,在它下面有一些文字等等。你可以再次将它抽象到它自己的Facelet文件中,而不是一遍又一遍地重复它。虽然你可以ui:包含它,但大多数人似乎更喜欢在这里创建一个标签,所以你可以使用例如您的Facelets上的<my:image src="..." />。这看起来更好(更紧凑,更与其他组件内联)。

在与JSF 2.0捆绑在一起的Facelets版本中,简单标记可以由composite components替换。这是第三种变体,乍一看看起来很像自定义标签,但这些东西在技术上是不同的,因为它们不仅仅是一个包含,而是代表具有声明属性的真实组件,附加验证器的能力等等。