用服务器端处理来解决XForms缺乏浏览器支持的问题

ZDNet软件频道 时间:2003-06-24 作者:周靖 译 |  我要评论(8)
本文关键词:
一般人在部署XForms时都非常谨慎,因其目前缺乏浏览器支持。大多数浏览器以后都会支持XForms,但就目前来说,要想实现它,惟一可靠及灵活的方式就是采用一种服务器端的机制。本文指导你通过Java Framework来使用XForms。
本文译自Builder.com,未经许可请勿转载一般人在部署XForms时都非常谨慎,因其目前缺乏浏览器支持。大多数浏览器以后都会支持XForms,但就目前来说,要想实现它,惟一可靠及灵活的方式就是采用一种服务器端的机制。本文指导你通过Java Framework来使用XForms。

何谓XForms?

XForms是一个XML应用程序,反映了下一代Web的风貌。它将传统的XHTML表单分解为3部分:

  • XForms模型
  • 实例数据
  • 用户界面

通过这种分解,你可实现强类型处理、重用性、表示与内容的隔离以及与设备的无关性。XForms几乎完全避免了脚本编程的必要。它相当于一个人和一个代理(通常位于远程)进行在线交互时的接口。这种交互是通过XForms Processor进行的,XForms Processor是实现了XForms规范的一个程序。其中的一个实现就是Chiba。下面来看看使用它时牵涉到的步骤。注意,XForms在进行XML处理时使用了Java风格的API(JAXP、JAXM等等),但目前还不存在相应的工业标准。所以,Chiba内部使用的API将来可能发生改变。

表单模型

首先要构建表单模型来描述表单逻辑(清单A)。该模型指出需要的字段、它们的格式以及它们要绑定到实例数据的什么XML元素。本例使用的表单非常简单。其中包含一个列表框,它罗列了几个选项;另外还有一个文本框。在Web浏览器中,呈现此类控件最简便的方式就是使用一个选择框(<html:select>)以及一个文本输入表单元素(<html:input type="text">)。呈现出来的表单如A所示。

图A


在这个模型中,可看到包含在<xforms:instance>元素中的默认实例数据。使用这个实例,XForms Processor就会初始化。稍后还会讲到将实例传入处理器的另一种方式——作为一个DOM节点直接从Java中传入。如实例未初始化,就呈现一个空表单。

呈现表单

接着就可以呈现表单,并处理用户输入的数据(清单B)。我们将写一个小的Servlet,使用doGet()方法来描绘表单,并在用户通过POST提交表单时(也就是在doPost()方法中),收集一个DOM文档中的用户数据。

Chiba XForms框架的一个主要设计目标就是提供出色的灵活性,这种灵活性依赖于Java接口。你只需实现最能满足自己需要的接口即可。例如,一个用户可能想把XForms模型存储到一个独立的文件中,另一个用户则可能想把表单存储到一个数据库中。之所以要在Chiba中使用连接器,正是为了获得这样的灵活性。我们将使用BasicFileSystemConnector,这个连接器实现了XFormsConnector接口。注意Chiba的灵活性也具有负面影响,也就是构建一个实例时,可能需要一定的技巧,因为灵活性的提高也意味着复杂性的增大。尤其是在本例中,我们要用几个附加的包装器类来构建一个Chiba实例,而非只是创建一个对象。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134