什么是JSF自定义复合组件与自定义经典组件之间的区别

时间:2012-10-11 19:23:25

标签: jsf java-ee jsf-2 custom-component composite-component

我想构建一个自定义的JSF组件。现在我从oracle上读了一些文档,看了几个代码示例。问题是我有点困惑:

似乎有两种方法可以使用JSF 2.0+构建自定义组件。据我所知,自JSF 2.0以来我可以使用这些复合组件来构建我自己的组件。

但与“经典”组件相比,它们有任何缺点吗?

当我使用Compisite Components时,我的组件会变得相当复杂吗(除了向下兼容性之外)?

例如我的Component在java中会有一些工作,这可能与Composite Components有关吗?

1 个答案:

答案 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>时。

另见: