【发布时间】:2011-07-13 23:44:45
【问题描述】:
Ui:include 和基于 xhtml 的标签(带有源 elt 的标签)对我来说似乎很相似。两者都允许重用一段标记。但我相信拥有每一个都应该有一些理由。有人可以简要解释一下吗? (我想如果我阅读完整的 facelets 教程我会学习它,但我现在没有时间去做,所以请不要链接到冗长的文档:)
【问题讨论】:
标签: facelets
Ui:include 和基于 xhtml 的标签(带有源 elt 的标签)对我来说似乎很相似。两者都允许重用一段标记。但我相信拥有每一个都应该有一些理由。有人可以简要解释一下吗? (我想如果我阅读完整的 facelets 教程我会学习它,但我现在没有时间去做,所以请不要链接到冗长的文档:)
【问题讨论】:
标签: facelets
它们非常相似。区别主要在于语法。
在观察了一段时间后,似乎惯例是您仅在单一情况下使用的片段是 ui:include 的候选者,而您更频繁地重复使用并且具有更独立语义的片段是候选者自定义标签。
例如
单个视图可能有一个包含三个部分的表单;个人数据、工作经历、偏好。如果页面变得笨重,您可以将其分成更小的部分。这 3 个部分中的每一个都可以移动到它们自己的 Facelet 文件中,然后将被 ui 包含到原始文件中。
另一方面,您可能有一种特定的方式在应用程序中的许多视图上显示图像。也许你在它周围画一条线,在它下面有一些文本等等。你可以再次将它抽象到它自己的 Facelet 文件中,而不是一遍又一遍地重复。虽然你可以 ui:include 它,但大多数人似乎更喜欢在这里创建一个标签,所以你可以使用例如<my:image src="..." /> 在您的 Facelets 上。这看起来更好(更紧凑,更内联其他组件)。
在与 JSF 2.0 捆绑在一起的 Facelets 版本中,简单标签可以替换为 composite components。这是第三种变体,乍一看很像自定义标签,但这些东西在技术上是不同的,因为它们不仅仅是一个包含,而是代表具有声明属性的真正组件,能够附加验证器等。
【讨论】: