XForms 表单预加载数据的几种方法

在本文中,分别介绍了几种基于 XFroms 标准的表单预加载数据的解决方案,从最简单的数据逻辑混在一起的方法,到数据与逻辑分离,最后到声明式预加载数据的方式,每种方式都有着自己的优缺点,能够满足不同的用户需求和数据预加载策略。灵活运用 XForms 标准提供的各项设施,是寻找解决客户问题解决方案的关键所在。

背景

作为以 XForms 作为数据描述和交换方式的表单,在以丰富的页面和逻辑展示给用户的同时,最大的价值在收集用户的数据并提交给处理系统,并获得准确的反馈给用户。这里无法避免的一个问题就是,在向用户呈现这样一个具备丰富表现力的表单的过程中,如何提供给用户必备的可选项,来提高表单与用户之间的交互性。本文要讨论的就是基于 XFroms 的表单在处理预加载数据方面,可以参照的几种解决方案。并按照由浅入深的程度逐一介绍。





回页首


数据和逻辑混在一起

预加载数据到表单,能想起来的最简单的办法当然是将待加载的数据直接写到表单中了,这是最直观也最明白的做法。Lotus Forms 中的 XFDL 是 XFroms 的宿主语言,这个语言规范提供了很多 UI 方面的元素来增强表单与用户之间的交互能力,其中就包括 Cell 这种类型的 item,来为可以合成组(group)的选项提供语义上的支持。Cell 的定义可以简单写成如下这样:


清单 1. 数据和逻辑混在一起
<popup sid="POPUP1"> 
<itemlocation>
<x>70</x>
<y>231</y>
</itemlocation>
<label>XFDL Country</label>
<size>
<width>20</width>
<height>1</height>
</size>
<group>country_group</group>
</popup>
<cell sid="CELL1">
<value>China</value>
<group>country_group</group>
</cell>
<cell sid="CELL2">
<value>United States</value>
<group>country_group</group>
</cell>

这样,只要是 UI 元素(List、Popup 或者 Checkgroup)的 group 申明为 country_group,在表单被打开呈现时,该 UI 元素自然就会绑定同一 group 的所有 cell 的数据。这样的方式操作起来一目了然,但弊端也是无法忽略的。如果可选项的数据是限制在可以(人工输入)接受的限度下,无疑我们就不需要再继续本文下面的讨论了。一旦可选项数据产生了数量级上的变化,那么每次修改表单源码,并重复拷贝粘贴的工作量无疑是场噩梦。一个再正常不过的例子就是,在搜集用户账号信息的表单中,Country 这一项是绝不会只有 China 和 United States 两个选项供选择的。





回页首


数据和逻辑分离

XForms 作为专门为表单而设计的 WEB 标准,提供了一系列增强 UI 元素与数据实例之间进行绑定的标签定义,比如 xform:item 和 xforms:itemset。使用 xforms:itemset 同样可以将 UI 中描述可选项的元素和数据实例中的数据绑定起来,达到动态绑定的效果。这样数据就与 UI 脱离开来,两部分各司其职,表单各部分结构清晰,达到 MVC 结构在表单层面的实现。这也是 XForms 所谓新表单标准的一部分意义之所在。在分离了可选项数据与 UI 元素之后的表单内容如下:


清单 2. 存在于数据实例中的可选项数据:
 


本文转自IBM Developerworks中国

      请点击此处查看全文


你可能感兴趣的:(XForms 表单预加载数据的几种方法)