表单管理方法、装置、介质和计算设备
技术领域
本发明的实施方式涉及通信及计算机技术领域,更具体地,本发明的实施方式涉及表单管理方法、装置、介质和计算设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
一个表单(form)可能包含多个具体的子表单(如:input、option等),目前在对表单进行管理时主要是通过人工手动给每一个子表单绑定相应的方法来获取子表单变动后的信息,以基于获取到的信息来实现数据收集或者校验的功能,最后再统一汇总提交到后端服务器。
发明内容
但是,由于需要手动给每一个子表单绑定相应的方法来实现相应的操作(比如校验方法,在校验错误后提示相应的错误信息),并且需要手动把所有子表单中填写的数据收集到一起才能查看整个表单是否填写完毕,因此在实现时过程繁琐,并且也不利于后期维护。
为此,非常需要一种改进的表单管理方案,可以方便、高效地实现对表单的管理,解决了相关技术中需要手动收集所有子表单中的数据而导致实现繁琐、不利于后期维护的问题。
在本上下文中,本发明的实施方式期望提供一种表单管理方法、装置、介质和计算设备。
在本发明实施方式的第一方面中,提供了一种表单管理方法,包括:获取需要管理的所有子组件,其中每个子组件包含有表单中的至少一个子表单;收集所述所有子组件中包含的子表单中的数据;基于收集到的数据,对所述表单进行管理。
在本发明的一些实施方式中,基于前述方案,获取需要管理的所有子组件的步骤,包括:检测各个子组件的类名是否符合预定格式;若任一子组件的类名符合所述预定格式,则确定所述任一子组件为需要管理的子组件。
在本发明的一些实施方式中,基于前述方案,收集所述所有子组件中包含的子表单中的数据的步骤,包括:复制所述所有子组件中的每个子组件,以得到复制后的子组件;在所述复制后的子组件中添加函数;基于添加的所述函数收集相应子表单中的数据。
在本发明的一些实施方式中,基于前述方案,在相应子表单中的数据发生变化时,基于添加的所述函数收集相应子表单中的数据。
在本发明的一些实施方式中,基于前述方案,基于收集到的数据,对所述表单进行管理的步骤,包括:根据获取到的所述所有子组件,生成所述表单的数据结构,所述数据结构中包含有所述所有子组件的子表单的属性字段;根据收集到的数据,更新所述数据结构中相应的属性字段的值。
在本发明的一些实施方式中,基于前述方案,还包括:检测需要管理的子组件是否增加或减少,以得到需要管理的子组件的变化情况;根据需要管理的子组件的变化情况,调整所述表单的数据结构。
在本发明的一些实施方式中,基于前述方案,还包括:将需要管理的子组件存储至子组件池中;根据需要管理的子组件的变化情况,更新所述子组件池中存储的子组件。
在本发明的一些实施方式中,基于前述方案,所述数据结构中的每个子表单的属性字段包含有用于标识子表单值的第一字段和用于标识所述每个子表单的校验方法的第二字段。
在本发明的一些实施方式中,基于前述方案,根据收集到的数据,更新所述数据结构中相应的属性字段的值的步骤,包括:根据收集到的数据,更新相应的属性字段中的所述第一字段的值;在所述第一字段的值更新后,基于所述相应的属性字段中的所述第二字段标识的校验方法对所述第一字段更新后的值进行校验。
在本发明的一些实施方式中,基于前述方案,所述每个子表单的属性字段还包含有用于标识所述每个子表单的校验结果的第三字段;所述方法还包括:根据对所述第一字段更新后的值的校验结果,更新所述相应的属性字段中的所述第三字段的值。
在本发明的一些实施方式中,基于前述方案,还包括:根据所述数据结构中的每个子表单的属性字段包含的所述第三字段的值,对所述表单进行校验,以得到所述表单的校验结果。
在本发明的一些实施方式中,基于前述方案,在表单的提交指令被触发时,根据所述数据结构中的每个子表单的属性字段包含的所述第三字段的值,对所述表单进行校验。
在本发明实施方式的第二方面中,提供了一种介质,其上存储有程序,该程序被处理器执行时实现如上述实施方式中第一方面所述的方法。
在本发明实施方式的第三方面中,提供了一种表单管理装置,包括:获取单元,用于获取表单中需要管理的所有子组件,其中的每个子组件包含有至少一个子表单;收集单元,用于收集所述所有子组件中包含的子表单中的数据;管理单元,用于基于收集到的数据,对所述表单进行管理。
在本发明的一些实施方式中,基于前述方案,所述获取单元配置为:检测所述表单中的各个子组件的类名是否符合预定格式;在所述表单中的任一子组件的类名符合所述预定格式时,确定所述任一子组件为需要管理的子组件。
在本发明的一些实施方式中,基于前述方案,所述收集单元包括:复制单元,用于复制所述每个子组件,以得到复制后的子组件;添加单元,用于在所述复制后的子组件中添加函数;执行单元,用于基于添加的所述函数收集所述子表单中的数据。
在本发明的一些实施方式中,基于前述方案,所述执行单元配置为:在所述子表单中的数据发生变化时,基于添加的所述函数收集所述子表单中的数据。
在本发明的一些实施方式中,基于前述方案,所述管理单元包括:生成单元,用于根据获取到的所述所有子组件,生成所述表单的数据结构,所述数据结构中包含有所述所有子组件中的所有子表单的属性字段;更新单元,用于根据收集到的数据,更新所述数据结构中相应的属性字段的值。
在本发明的一些实施方式中,基于前述方案,还包括:检测单元,用于检测所述表单中需要管理的子组件是否增加或减少,以得到所述表单中需要管理的子组件的变化情况;调整单元,用于根据所述表单中需要管理的子组件的变化情况,调整所述表单的数据结构。
在本发明的一些实施方式中,基于前述方案,还包括:存储单元,用于将所述表单中需要管理的子组件存储至子组件池中,并根据所述表单中需要管理的子组件的变化情况,更新所述子组件池中存储的子组件。
在本发明的一些实施方式中,基于前述方案,所述数据结构中的每个子表单的属性字段包含有用于标识子表单值的第一字段和用于标识所述每个子表单的校验方法的第二字段。
在本发明的一些实施方式中,基于前述方案,所述更新单元配置为:根据收集到的数据,更新相应的属性字段中的所述第一字段的值;在所述第一字段的值更新后,基于所述相应的属性字段中的所述第二字段标识的校验方法对所述第一字段更新后的值进行校验。
在本发明的一些实施方式中,基于前述方案,所述每个子表单的属性字段还包含有用于标识所述每个子表单的校验结果的第三字段;所述更新单元还配置为:根据对所述第一字段更新后的值的校验结果,更新所述相应的属性字段中的所述第三字段的值。
在本发明的一些实施方式中,基于前述方案,还包括:校验单元,用于根据所述数据结构中的每个子表单的属性字段包含的所述第三字段的值,对所述表单进行校验,以得到所述表单的校验结果。
在本发明的一些实施方式中,基于前述方案,所述校验单元配置为:在表单的提交指令被触发时,根据所述数据结构中的每个子表单的属性字段包含的所述第三字段的值,对所述表单进行校验。
在本发明实施方式的第四方面中,提供了一种计算设备,包括:处理器和存储器,所述存储器存储有可执行指令,所述处理器用于调用所述存储器存储的可执行指令执行如上述实施方式中第一方面所述的方法。
根据本发明实施方式的表单管理方法和装置,通过获取需要管理的所有子组件,然后收集所有子组件包含的子表单中的数据,以基于收集到的数据对表单进行管理,使得能够通过子组件实现对子表单中数据的收集,进而能够进行统一管理,解决了手动收集所有子表单中的数据而导致实现繁琐、不利于后期维护的问题。
在本发明的一些实施方式中,通过检测各个子组件的类名是否符合预定格式,以确定子组件是否为需要管理的子组件,使得能够通过开放式的收集策略来实现对所有满足条件的子组件的收集。相较于通过对比每个子组件是否是已知的几种类型的子组件的方案,本发明实施方式的技术方案具有较强的拓展性,能够方便地实现除预置的子组件类型之外的其他子组件的检测及管理。
在本发明的一些实施方式中,通过复制子组件,并在复制的子组件中添加函数,以基于添加的函数来收集相应子表单中的数据,使得在添加函数收集数据时,可以不对原始子组件的结构造成影响。而通过在子表单中的数据发生变化时,基于添加的函数收集相应子表单中的数据,使得能够动态收集各个子表单中的数据,保证收集到的数据的时效性。
在本发明的一些实施方式中,通过生成表单的数据结构,使得能够基于该数据结构方便地对各个子表单进行管理。而通过根据需要管理的子组件的变化情况调整表单的数据结构,使得能够保证表单的数据结构得到及时更新。
在本发明的一些实施方式中,通过根据收集到的数据更新数据结构中相应的属性字段中的第一字段(用于标识子表单值)的值,并基于相应的属性字段中的第二字段标识的校验方法对第一字段更新后的值进行校验,使得能够实时对子表单中的值进行校验。而通过根据表单的数据结构中每个子表单的属性字段包含的第三字段的值,对整体表单进行校验,使得能够根据每个子表单的校验结果自动实现对整体表单的校验,解决了手动收集所有子表单中的数据之后再手动进行判断而导致实现繁琐、不利于后期维护的问题。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性示出了根据本发明的第一个实施方式的表单管理方法的流程图;
图2示意性地示出了图1中所示的步骤S14的一个实施方式的流程图;
图3示意性示出了根据本发明的第二个实施方式的表单管理方法的流程图;
图4示出了根据本发明的一个实施方式的表单的数据结构示意图;
图5示意性示出了根据本发明的实施方式的表单管理装置的框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种表单管理方法、装置、介质和计算设备。
在本文中,需要理解的是,所涉及的术语“表单(即form)”表示提供给用户用来提交信息的网页元素。术语“子表单”表示嵌套于表单内部需要用户输入的网页元素,如input、select、checkbox等。
术语“组件”表示独立的网页元素集合,比如基于React(是一种用于构建用户界面的JavaScript库,用于解决数据到视图渲染的一个前端开发框架)开发的网页元素集合。需要说明的是,组件是对表单进行封装得到的,以用于在表单的基础功能上扩展一些方法和属性。比如Form组件即是对form进行的封装,子组件即是对子表单进行的封装,并且子组件和Form组件之间可以建立联系,以实现通信。
此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,由于目前在对表单进行管理时需要手动给每一个子表单绑定相应的方法来实现相应的操作,并且需要手动把所有子表单中填写的数据收集到一起才能查看整个表单是否填写完毕,因此在实现时过程繁琐,并且也不利于后期维护。
为此,本发明的实施方式提供了一种改进的表单管理方案,可以方便、高效地实现对表单的管理,解决了相关技术中需要手动收集所有子表单中的数据而导致实现繁琐、不利于后期维护的问题。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
需要注意的是,下述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
网页上表单(比如问卷调查网页上的表单)包含了多个子表单(比如输入框、复选框等),当用户针对子表单进行输入之后,相应的子组件会收集到用户输入的数据,然后更新表单的数据结构中相应的属性字段的值,并对输入的值进行校验,得到针对单个子表单的校验结果,当用户完成所有子表单的输入之后,系统会根据所有子表单的校验结果确定整个表单的校验结果,并呈现给用户。
示例性方法
下面结合上述的应用场景,参考图1至图4来描述根据本发明示例性实施方式的表单管理方法。
图1示意性示出了根据本发明的第一个实施方式的表单管理方法的流程图。
参照图1,根据本发明的第一个实施方式的表单管理方法,包括:
步骤S10,获取需要管理的所有子组件,其中每个子组件包含有表单中的至少一个子表单。
需要说明的是,本发明实施方式中的子组件是由子表单封装而成的,并且一个子组件可以是由一个或者多个子表单封装而成。
根据本发明的示例性实施方式,步骤S10包括:检测各个子组件的类名是否符合预定格式;若任一子组件的类名符合所述预定格式,则确定所述任一子组件为需要管理的子组件。
在该实施方式中,通过检测各个子组件的类名是否符合预定格式,以确定子组件是否为需要管理的子组件,使得能够通过开放式的收集策略来实现对所有满足条件的子组件的收集。相较于通过对比每个子组件是否是已知的几种类型的子组件的方案,该实施方式的技术方案具有较强的拓展性,能够方便地实现除预置的子组件类型之外的其他子组件的检测及管理。
具体地,比如子组件的类名符合/^_Field/时,认为该子组件是需要管理的子组件。在本发明的一种实施方式中,开发人员在编写各个子组件时,可以有针对性地将需要管理的子组件的类名编写为相应的格式,以确保后续能够根据子组件的类名确定是否需要对子组件进行管理。
步骤S12,收集所述所有子组件中包含的子表单中的数据。
根据本发明的示例性实施方式,步骤S12包括:复制所述所有子组件中的每个子组件,以得到复制后的子组件;在所述复制后的子组件中添加函数;基于添加的所述函数收集相应子表单中的数据。
在该实施方式中,通过复制子组件,并在复制的子组件中添加函数,以基于添加的函数来收集相应子表单中的数据,使得在添加函数收集数据时,可以不对原始子组件的结构造成影响。
进一步地,可以在相应子表单中的数据发生变化时,基于添加的所述函数收集相应子表单中的数据,这样可以动态收集各个子表单中的数据,保证收集到的数据的时效性。
步骤S14,基于收集到的数据,对所述表单进行管理。
根据本发明的示例性实施方式,参照图2,步骤S14包括:
步骤S142,根据获取到的所有子组件,生成表单的数据结构,所述数据结构中包含有所有子组件的子表单的属性字段。
在步骤S142中,通过生成表单的数据结构,使得能够基于该数据结构方便地对各个子表单进行管理。
进一步地,在本发明的实施方式中,在前述方案的基础上还可以包括:检测需要管理的子组件是否增加或减少,以得到需要管理的子组件的变化情况;根据需要管理的子组件的变化情况,调整所述表单的数据结构。该实施方式中通过根据需要管理的子组件的变化情况调整表单的数据结构,使得能够保证表单的数据结构得到及时更新。
在本发明的一些实施方式中,基于前述方案,还包括:将需要管理的子组件存储至子组件池中;根据需要管理的子组件的变化情况,更新所述子组件池中存储的子组件。
在该实施方式中,通过根据需要管理的子组件的变化情况,更新子组件池中存储的子组件,使得能够保证子组件池中的子组件都是需要管理的子组件,进而保证整个表单对外提供数据的准确性。
在本发明的一些实施方式中,基于前述方案,所述数据结构中的每个子表单的属性字段包含有用于标识子表单值的第一字段和用于标识所述每个子表单的校验方法的第二字段。
步骤S144,根据收集到的数据,更新所述数据结构中相应的属性字段的值。
根据本发明的示例性实施方式,步骤S144包括:根据收集到的数据,更新相应的属性字段中的所述第一字段的值;在所述第一字段的值更新后,基于所述相应的属性字段中的所述第二字段标识的校验方法对所述第一字段更新后的值进行校验。
在该实施方式中,通过基于相应的属性字段中的第二字段标识的校验方法对第一字段更新后的值进行校验,使得能够自动实现对各个子表单的值进行校验。
在本发明的一些实施方式中,基于前述方案,所述每个子表单的属性字段还包含有用于标识所述每个子表单的校验结果的第三字段;所述方法还包括:根据对所述第一字段更新后的值的校验结果,更新所述相应的属性字段中的所述第三字段的值。换句话说,第三字段的值即是存储校验通过与否的结果。
在本发明的一些实施方式中,基于前述方案,还包括:根据所述数据结构中的每个子表单的属性字段包含的所述第三字段的值,对所述表单进行校验,以得到所述表单的校验结果。
在该实施方式中,通过根据表单的数据结构中每个子表单的属性字段包含的第三字段的值,对整体表单进行校验,使得能够根据每个子表单的校验结果自动实现对整体表单的校验,解决了手动收集所有子表单中的数据之后再手动进行判断而导致实现繁琐、不利于后期维护的问题。
在本发明的一些实施方式中,基于前述方案,在表单的提交指令被触发时,根据所述数据结构中的每个子表单的属性字段包含的所述第三字段的值,对所述表单进行校验。
图3示意性示出了根据本发明的第二个实施方式的表单管理方法的流程图。
参照图3,根据本发明的第二个实施方式的表单管理方法,主要包括三个过程:初始化过程、用户输入时的处理过程和提交时的处理过程,以下分别介绍这三个过程:
初始化过程:
(1)收集符合条件的子组件
首先,通过遍历Form组件的子组件来获取所有需要管理的子组件,具体地,只要子组件的classname(类名)符合/^_Field/,那么就认为这个子组件是需要Form组件来管理的。而传统的方式是通过比对的方式来确定子组件是不是常用的input、checkbox、select等中的一个来决定是不是要收集它的状态,具有很大的局限性。
当获取到要管理的子组件后,通过clone(复制)一个新的组件来给这个子组件注入Form组件的钩子函数,如该钩子函数可以是handleFieldChange,同时把这个clone后的组件放到子组件池中方便后续管理。
需要说明的是,上述钩子函数的作用是实现父组件与子组件之间的通讯。具体地,当子组件在发生变化时通过调用该钩子函数来通知Form组件,并把需要传递的数据按照约定好的格式作为参数传递过去。
父组件,即Form组件通过被动调用该钩子函数来获取并更新每一个子表单的数据,这样就完成了对所有子表单状态的收集和管理。
虽然目前预置的子组件只有Input、Checkbox、Select,但是由于采用本发明实施方式中的开放式收集策略,因此任何实现了对上述钩子函数调用的classname符合/^_Field/的子组件,都可以被Form组件所收集和管理,大大增强了Form组件的管理范围,而不仅仅局限于传统html提供的几个表单控件。
(2)提取整个表单的Form Data
在确定需要管理的子组件后,就可以初始化整个表单的数据结构,并基于该数据结构存储表单的Form Data,以方便后续的状态管理和更新。需要说明的是,整个表单的数据结构中包含了子组件中的子表单的属性字段,以标识子表单的状态。
在本发明的实施方式中,子表单的属性字段可以包括:Name、Value、校验方法(提供正则和自定义Function)、校验结果、校验错误时的错误信息、是否需要加密、是否为必填项等。在本发明的一个实施方式中,整个表单的数据结构可以如图4所示。
同时,Form组件本身维护一个子组件池,在每次Form组件发生更新的时候更新这个子组件池,清理掉已经删除的子组件并添加新增的子组件,以保证Form组件对外提供的数据永远是正确的。
此外,Form组件在发生变化时会对外触发onChange事件来让外界获取当前的最新状态。
用户输入时的处理过程:
(1)动态更新Form Data和实时校验子表单的状态
在每次Form组件发生变化或者其下的子组件发生变化时,对Form Data进行更新。更新主要分为两个方面:一方面是数据结构的变更,当Form组件下面的子组件的数量增加或者减少时,对其进行数据结构上的更新;一方面是内容的更新,当Form组件下面的子组件状态发生变化时,针对性的对Form Data中相应的子表单的属性字段(如图4所示的表单结构中的name字段)进行更新。具体地,需要根据子表单的值实时校验子表单的状态,然后对相应的属性字段进行更新。
(2)检测整个表单的填写状态
对Form组件进行填写完成的校验,更新到相应的字段上(在图4所示的表单结构中,将填写完成的校验结果更新到isComplete字段上)。
提交时的处理过程:
(1)校验整个表单
当表单的submit(提交)被触发时,对整个表单进行校验,以确定是否能够提交,并更新相应的字段(如在图4所示的表单结构中,更新isValidate字段),并在校验没有通过的时候把错误信息填写到相应的字段中(如在图4所示的表单结构中,将错误信息填写到errorMsgList字段)。
(2)提供处理后用于提交给服务器的数据
当整个表单校验通过之后,对外触发onSubmit方法,然后提供处理后的数据,以便服务器进行相应的处理。
需要说明的是,在本发明的实施方式中,上述功能的实现可以是由Form组件来完成的,即Form组件能够实现如下的功能:
1、管理整个表单的状态,包括:
(1)每一条子表单的状态;
(2)整个表单的填写完成情况;
(3)整个表单是否都通过校验;
(4)当前校验失败的错误信息。
2、子表单发生变化的回调函数,接收的参数为子表单本身的状态;
3、Form组件发生变化的回调函数,接收的参数为整个表单的状态;
4、提交时触发的回调函数,接收的参数包括:表单是否通过校验、整个表单的状态、处理过后方便提交的数据。
可见,本发明上述实施方式的技术方案能够动态收集及处理整个表单中的子表单的数据,实现了对表单的高效管理。在具体实现时,可以通过声明式的引入来将表单及子表单封装为Form组件和子组件,配置简单,但是能够实现非常强大的表单管理功能。
示例性介质
在介绍了本发明示例性实施方式的方法之后,接下来,对本发明示例性实施方式的介质进行说明。
在一些可能的实施方式中,本发明的各个方面还可以实现为一种介质,其上存储有程序代码,当所述程序代码被设备的处理器执行时用于实现本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的表单管理方法中的步骤。
具体地,所述设备的处理器执行所述程序代码时用于实现如下步骤:获取需要管理的所有子组件,其中每个子组件包含有表单中的至少一个子表单;收集所述所有子组件中包含的子表单中的数据;基于收集到的数据,对所述表单进行管理。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时用于实现如下步骤:检测各个子组件的类名是否符合预定格式;若任一子组件的类名符合所述预定格式,则确定所述任一子组件为需要管理的子组件。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时用于实现如下步骤:复制所述所有子组件中的每个子组件,以得到复制后的子组件;在所述复制后的子组件中添加函数;基于添加的所述函数收集相应子表单中的数据。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时用于实现如下步骤:在相应子表单中的数据发生变化时,基于添加的所述函数收集相应子表单中的数据。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时用于实现如下步骤:根据获取到的所述所有子组件,生成所述表单的数据结构,所述数据结构中包含有所述所有子组件的子表单的属性字段;根据收集到的数据,更新所述数据结构中相应的属性字段的值。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时还用于实现如下步骤:检测需要管理的子组件是否增加或减少,以得到需要管理的子组件的变化情况;根据需要管理的子组件的变化情况,调整所述表单的数据结构。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时还用于实现如下步骤:将需要管理的子组件存储至子组件池中;根据需要管理的子组件的变化情况,更新所述子组件池中存储的子组件。
在本发明的一些实施方式中,所述数据结构中的每个子表单的属性字段包含有用于标识子表单值的第一字段和用于标识所述每个子表单的校验方法的第二字段。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时用于实现如下步骤:根据收集到的数据,更新相应的属性字段中的所述第一字段的值;在所述第一字段的值更新后,基于所述相应的属性字段中的所述第二字段标识的校验方法对所述第一字段更新后的值进行校验。
在本发明的一些实施方式中,所述每个子表单的属性字段还包含有用于标识所述每个子表单的校验结果的第三字段;所述设备的处理器执行所述程序代码时用于实现如下步骤:根据对所述第一字段更新后的值的校验结果,更新所述相应的属性字段中的所述第三字段的值。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时还用于实现如下步骤:根据所述数据结构中的每个子表单的属性字段包含的所述第三字段的值,对所述表单进行校验,以得到所述表单的校验结果。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时用于实现如下步骤:在表单的提交指令被触发时,根据所述数据结构中的每个子表单的属性字段包含的所述第三字段的值,对所述表单进行校验。
需要说明的是:上述的介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、RF等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性装置
在介绍了本发明示例性实施方式的介质之后,接下来,参考图5对本发明示例性实施方式的表单管理装置进行说明。
图5示意性示出了根据本发明的实施方式的表单管理装置的框图。
参照图5,根据本发明的实施方式的表单管理装置500,包括:获取单元502、收集单元504和管理单元506。
具体地,获取单元502用于获取表单中需要管理的所有子组件,其中的每个子组件包含有至少一个子表单;收集单元504用于收集所述所有子组件中包含的子表单中的数据;管理单元506用于基于收集到的数据,对所述表单进行管理。
在本发明的一些实施方式中,基于前述方案,所述获取单元502配置为:检测所述表单中的各个子组件的类名是否符合预定格式;在所述表单中的任一子组件的类名符合所述预定格式时,确定所述任一子组件为需要管理的子组件。
在本发明的一些实施方式中,基于前述方案,所述收集单元504包括:复制单元5042,用于复制所述每个子组件,以得到复制后的子组件;添加单元5044,用于在所述复制后的子组件中添加函数;执行单元5046,用于基于添加的所述函数收集所述子表单中的数据。
在本发明的一些实施方式中,基于前述方案,所述执行单元5046配置为:在所述子表单中的数据发生变化时,基于添加的所述函数收集所述子表单中的数据。
在本发明的一些实施方式中,基于前述方案,所述管理单元506包括:生成单元5062,用于根据获取到的所述所有子组件,生成所述表单的数据结构,所述数据结构中包含有所述所有子组件中的所有子表单的属性字段;更新单元5064,用于根据收集到的数据,更新所述数据结构中相应的属性字段的值。
在本发明的一些实施方式中,基于前述方案,还包括:检测单元508,用于检测所述表单中需要管理的子组件是否增加或减少,以得到所述表单中需要管理的子组件的变化情况;调整单元510,用于根据所述表单中需要管理的子组件的变化情况,调整所述表单的数据结构。
在本发明的一些实施方式中,基于前述方案,还包括:存储单元512,用于将所述表单中需要管理的子组件存储至子组件池中,并根据所述表单中需要管理的子组件的变化情况,更新所述子组件池中存储的子组件。
在本发明的一些实施方式中,基于前述方案,所述数据结构中的每个子表单的属性字段包含有用于标识子表单值的第一字段和用于标识所述每个子表单的校验方法的第二字段。
在本发明的一些实施方式中,基于前述方案,所述更新单元5064配置为:根据收集到的数据,更新相应的属性字段中的所述第一字段的值;在所述第一字段的值更新后,基于所述相应的属性字段中的所述第二字段标识的校验方法对所述第一字段更新后的值进行校验。
在本发明的一些实施方式中,基于前述方案,所述每个子表单的属性字段还包含有用于标识所述每个子表单的校验结果的第三字段;所述更新单元5064还配置为:根据对所述第一字段更新后的值的校验结果,更新所述相应的属性字段中的所述第三字段的值。
在本发明的一些实施方式中,基于前述方案,还包括:校验单元514,用于根据所述数据结构中的每个子表单的属性字段包含的所述第三字段的值,对所述表单进行校验,以得到所述表单的校验结果。
在本发明的一些实施方式中,基于前述方案,所述校验单元514配置为:在表单的提交指令被触发时,根据所述数据结构中的每个子表单的属性字段包含的所述第三字段的值,对所述表单进行校验。
示例性计算设备
在介绍了本发明示例性实施方式的方法、介质和装置之后,接下来,介绍根据本发明的另一示例性实施方式的计算设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明实施方式的计算设备可以至少包括至少一个处理器、以及至少一个存储器。其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的表单管理方法中的步骤。例如,所述处理器可以执行如图1中所示的步骤S10,获取需要管理的所有子组件,其中每个子组件包含有表单中的至少一个子表单;步骤S12,收集所述所有子组件中包含的子表单中的数据;步骤S14,基于收集到的数据,对所述表单进行管理。又如,所述处理器也可以执行如图2和图3中所示的步骤。
应当注意,尽管在上文详细描述中提及了表单管理装置的若干单元或子单元,但是这种划分仅仅是示例性的,并非是强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或单元的特征和功能可以在一个模块或单元中具体化。反之,上文描述的一个模块或单元的特征和功能可以进一步划分为由多个模块或单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。