我想构建一个自定义的JSF组件。现在我从oracle上读了一些文档,看了几个代码示例。问题是我有点困惑:
似乎有两种方法可以使用JSF 2.0+构建自定义组件。据我所知,自JSF 2.0以来我可以使用这些复合组件来构建我自己的组件。
但与“经典”组件相比,它们有任何缺点吗?
当我使用Compisite Components时,我的组件会变得相当复杂吗(除了向下兼容性之外)?
例如我的Component在java中会有一些工作,这可能与Composite Components有关吗?
答案 0 :(得分:8)
如果您希望通过纯XML方式将一堆密切相关的现有标记/组件/ HTML表示为单个可重用组件,那么复合组件非常有用。
当没有标准JSF标记/组件可用于实现要求时,自定义组件将是唯一的方法。例如。 <input type="file">
,<input type="range">
等。请注意,只要需要,这样的自定义组件就可以在复合中使用。
完全有道理,对吗?
您可以创建一个所谓的“支持组件”类,扩展UINamingContainer
(或至少实现NamingContainer
)并通过<cc:interface componentType>
将其绑定到组合。 You can find several examples in my answers here
但请注意,有时复合组件不合适,您需要创建标签文件。例如,当您想要一个自定义且可重复使用的<h:column>
时。