技术开发 频道

用JSF用户组件模型简化Web开发



    4. JSF用户界面组件的呈现方式
    用户界面组件类是对web用户界面组件的抽象,在实际应用中,JSF为用户界面组件类定义了多种呈现方式。一个组件类对应多个呈现方式,这是容易理解的。例如,单选类UISelectOne,从功能上说,UISelectOne用于从一组可用选项里面选择一个选项,而在HTML的表现形式上,UISelectOne可以是一组radio button,可以是一个静态列表,也可以是一个下拉列表。因此,JSF为UISelectOne定义了三种呈现方式,分别是<h:slectOneRadio>,<h:selectOneListbox>和<h:selectOneMenu>。

    JSF的用户界面组件类和其呈现方式的分离,是JSF细化分工的一个典型例子。我们知道,在web应用,尤其是大型web应用中,团队成员众多,如果没有明确的分工,项目的管理将变得非常困难,而管理不善通常是项目失败的重要原因之一。JSF在程序员(具体角色可以是用户界面组件设计师)和网页设计人员之间划出了一条明确的界线,程序员负责逻辑,网页设计人员负责表现,二者虽然相互依赖,但职责明确,互不干扰。JSF允许网页设计人员改变数据的展示方式,而不需要程序员修改代码,这样,网页设计人员和程序员的工作分工非常清楚。

    5. JSF的用户界面呈现器技术
    JSF在用户界面组件呈现方式上的灵活性,得益于JSF引入的呈现器技术。JSF的用户界面组件并不总是由它们自己负责呈现的。如果用户界面组件自己呈现自己,这称为直接呈现模式,JSF还支持另外一种模式,即代理呈现模式。在代理呈现模式下,JSF用户界面组件的呈现是由一些专门的类负责的,这些类就是所谓的呈现器。

    呈现器可以看成是客户端和服务器之间的一个编码解码器。当web服务器要发送一个响应页面给用户时,呈现器执行编码操作,将用户界面组件编码成客户端能够理解的形式;相反,当JSF收到来自用户的请求时,呈现器执行的是解码操作,即从请求中解出正确的请求参数,然后根据这些参数设置用户界面组件的值。

    将适用于某种特定类型客户端的所有呈现器组织起来,就形成一个呈现包。按照规范,JSF的具体实现(Implementation)必须包含一个专供HTML客户端(即浏览器)使用的呈现包,所以,在JSF中编写web应用,呈现包已经就绪,程序员可以拿来就用。当然,如果要在别的客户端上运行JSF应用,必须安装或者开发针对该客户端的呈现包。可以想象,JSF应用跨客户端运行是非常简单的,所有业务逻辑、用户界面组件类都不需要改动,开发一个新的呈现包,应用就能在一个新的客户端上运行了。

    需要说明的是,JSF的呈现技术虽然很复杂,但对于普通网页设计师来说,并不需要了解呈现器的细节,整个呈现过程对网页设计师来说是透明的。轻点鼠标,按照页面设计的需要,将用户界面组件拖放到网页上,这就是网页设计师的全部工作。

0
相关文章