EasyJF 官方网站全面升级,同时EasyJF开源团队也将进行全面改组,期待您给我们提出宝贵的意见及建议!

当前位置:首页-技术前沿-MVC-JSF

  • 用JSF用户组件模型简化Web开发
    作者: 本站会员  来源:IBM中国  发布时间:2007-10-22 18:11:00
  • 1. JSF用户界面组件模型的组成部分
        用户界面一直是Web编程的难点之一。在桌面应用中,用户界面组件技术已经使用多年,但web领域,JSF的用户界面组件模型还是首创。JSF的用户界面组件是构成JSF应用的用户界面的元素,这些组件是可配置并且可重用的。有些组件非常简单,例如一个按钮,一个文本输入框等等。用这些简单的组件,可以构成复杂的、组合式的组件,例如多个类型的组件可以组合成一个表。

        JSF的用户界面组件模型非常方便,而且组件的功能强大,这个模型由几个部分组成。首先是一组称为UIComponent的java类,这些类描述了各个用户界面组件的状态和行为;其次是一个呈现模式,定义了如何以不同的方式呈现用户界面组件;为了响应用户界面组件的事件,JSF还引入了事件和监听模式;此外,JSF的类型转换模式,允许在用户界面组件上注册数据类型转换器;最后是JSF的验证模式,通过在用户界面组件上注册验证器,可以确保用户请求中包含的数据是合法的。

        2. JSF用户界面组件类
        JSF的用户界面组件,在页面上表现为标签,而在服务器端,用户界面组件其实是java类。JSF技术提供了一组用户界面组件类,并为这些类定义了若干接口,用来规范其功能。JSF的用户界面组件,有很多行为特征,例如,有些组件是含有状态信息的,有些组件可以维护一个指向其他对象的引用,有些组件可以产生事件等等。一个组件类如果实现了某个接口,那么这个组件就具备了该接口所定义的某种行为特征。

        JSF为所有的用户界面组件类定义了一个基类,即UIComponentBase类,这是一个抽象类,约定了所有UI组件类所共有的状态和行为。JSF的组件类是可扩展的,程序员可以继承这些类,然后编写自己的用户界面组件类。这允许程序员实现一些特殊用途的自定义用户界面组件类。

        JSF规范定义了一组标准的用户界面组件类,这是所有的JSF具体实现(Implementation)都必须提供的。标准的用户界面组件类包含构建 web用户界面的基本元素,例如标签、按钮、输入框、输出框、列表选择、菜单以及显示二维数据的数据表等,建立在标准用户界面组件类基础上的web应用,可以跨所有的JSF具体实现(Implementation)。

    3. JSF用户界面组件类的分类     按照功能,JSF的用户界面组件类可以分为几类,包括接收用户输入的类,用于显示数据、消息和静态文本的类,用于展示数据表格的类,用于提交表单的类以及用于构造表单、管理组件布局的类等。

        用于接收用户输入的类有多个,这是因为JSF允许用户以多种方式输入数据。典型的如文本输入框UIInput,允许用户从一个列表中选取一项的 UISelectOne,可以选取多个选项UISelectMany以及代表一个开关量(布尔值)的UISelectBoolean等。

        用于显示数据、消息和静态文本的类有UIOutput、UIMessage、UIMessages和UIGraphic等。UIOutput最常见,用来显示数据或静态标签;UIMessage是一个特殊用途的显示组件,它可以显示组件发出的消息,这些消息是组件在请求处理生命周期中产生的,包括提示信息、警告信息、一般错误和严重错误信息等;UIMessages和UIMessage类似,只不过前者显示某组件产生的所有信息,而后者则仅显示最近的一条;UIGraphic的用法很简单,显示一个图片,不过,就像JSF的所有其他用户界面组件一样,UIGraphic也是可以通过java代码在运行时访问的,因此,用UIGraphic可以在网页上动态的显示图片。

        用于展示数据表格的类,是JSF用户界面组件中功能最强大也是最有价值的一个。这个类使得在网页上显示一张数据表、查询或数据集合的编程任务,变得十分简单。关于这个类的详细介绍,我们将在后文《JSF的数据表组件》中专门提及。

        除了输入、输出和数据表格相关类以外,JSF还有一些特殊的类,包含特殊的功能。例如,UIForm是一个类似于HTML的form标签的用户界面组件类,它封装一组用户界面组件,形成一个表单,用于给服务器提交数据;UIPanel是另外一个特殊用途的用户界面组件,功能上与HTML的table相似,用来管理页面上用户界面组件的布局;其他还有用来为组件动态地增加属性的UIParameter,代表一个页面视图组件树的根(JSF的页面在运行时表现为一个视图)的UIViewRoot等。

    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条

发表评论:
评论: 
    

相关栏目

  • 如何才能得到国外最新的技术

Copyright (C) 2005 EasyJF.com 简易java框架网 渝ICP备06004507号
如有意见请与我们联系