请考虑以下两种不同类型的text输入框:
<input type=”text” name=”Amigo” value=”Amigo”>
<h:inputText id=”Amigo” value=”#{backingBean.Amigo}”>
这两种方式在功能上是等效的(当然这只是表面上,但实际上,后者还有很多其它的功能)。后者使用了客户化的命名空间,较为复杂的表达式,两个新的与HTML等价的属性。
尽管两者在功能上等同的,但是人们常常习惯于使用自己所熟悉的工具(一位著名的美国将军曾说:“千万别改变一个正赢着的团队”)。已有的标准开发包一般包括:服务器端的Java、客户端的HTML及JavaScript等等。而如今,JSF将引进全新且独特的HTML标签。
而这样导致了很多的用户对JSF浅尝辄止。对于已经熟悉<input/>的用户来说,为什么又要使用<h:inputText/>这样的标签呢?人们找不到必须使用此种标签的明显理由。尽管<h:inputText/>功能很强大,而具有Ajax功能的其它组件更是如此,JSF的导航功能很不错,它的表达式语言将成为一种标准。
但真正的问题在于,用户不得不使用如此基础的组件去构造已存在的标准组件。于是使用JSF特色的基础组件创建标准组件在开发难度上将是一个很大的跳跃。虽然在理论是可以实现,但是往往让用户无法忍受。
细心的读者会发现上面的用词:已存在的标准组件。这是有意如此叫法。如前所述,有许多的组件框架可以提供许多有趣有用且惊人的各种标准组件,以及一些必不可少的扩展组件,如日期和时间选取组件、多行文本框及界面调整器等。而在此方面将JSF推向正确方向的公司当首推:Oracle。
Oralce提供的ADF(Application Development Framework),是Oracle为 JSF 开发的一个大型组件库,是一系列的具有某一功能的部件集。做为一个end-to-end的框架,和Spring一样它在企业应用架构的每一个层次都提供了它的支持,表现层框架也提供了对JSF标准的参考实现。需要wiki吗?ADF Faces提供了wiki JSF组件。需要一个论坛?ADF Faces提供论坛JSF 组件。
想象在服务器端为每一个内容版块创建一个JSF组件,并将这些组件添加在一个面板(panel)上。在每一个内容版块,为每一个主题添加ADF论坛组件及wiki组件。当然,没有JSF这也是可能实现的。但是JSF组件不用客户编写全部代码而能实现此功能的能力,是很吸引人的。