掌桥专利:专业的专利平台
掌桥专利
首页

一种前端表单状态拦截扩展方法及系统

文献发布时间:2024-04-18 19:59:31


一种前端表单状态拦截扩展方法及系统

技术领域

本发明涉及计算机技术领域,具体涉及一种前端表单状态拦截扩展方法及系统。

背景技术

在Web应用中,表单的状态控制是一个重要的方面,而对表单的状态控制主要是从控件层进行控制。控件的状态主要包括是控件是否只读、控件是否可见、输入控件是否必填、控件是否禁用等。根据表单运行的场景,需要动态控制什么时候可以编辑表单数据,什么时候按钮可以展示出来,和一些其他的表单状态控制的场景。通常对于表单的状态控制,是在表单内部实现的。根据场景的不同,动态的改变表单状态。当有新的场景时,需要修改表单的逻辑,对原有代码产生了侵入性。

而传统的表单状态控制时存在以下问题:

一、功能耦合

通常对表单状态进行控制时,表单状态的控制逻辑在表单中,表单逻辑和状态控制耦合在一起。当在新的场景下,需要改变表单状态时,需要修改原有的表单逻辑,对原有代码产生侵入性,使得表单功能变得不稳定。

二、扩展性差

一个web表单通常需要运行在不同的环境下,例如当一个表单需要提交审批,制单状态下可以编辑所有字段;在第一个审批节点时,可以对A字段进行修改;如果添加了新的审批节点,需要控制只能对B字段修改,传统的需要修改原有的表单状态控制逻辑。在传统的表单状态控制下,当有新的场景时,不容易根据不同的场景进行扩展,在新的场景下对表单进行新的状态控制。

基于上述问题,为了把表单自身逻辑和不同场景下的状态控制进行解耦,需要提供一种在表单外对表单状态进行拦截的方法

发明内容

有鉴于此,本发明提出了一种前端表单状态拦截扩展方法及系统,通过实现系列的接口,来解决表单控件状态拦截扩展问题。

基于上述目的,第一方面,本发明提供了一种前端表单状态拦截扩展系统,包括以下组件:

生成器,用于根据表单控件的相关信息,生成对应的控件状态变量,并将表单控件的状态值替换成新的控件状态变量;

监听器,用于注册监听控件状态的初始值的变化。它监听到变化后,通过更新器组件来更新控件状态变量;

更新器,用于根据监听器监听到的初始值的变化,更新控件状态变量的值,实现动态控制表单控件状态;

计算器,用于根据控件状态的初始值的类型,计算出属性的初始值,包括常量、变量和表达式;

拦截器,用于对控件状态进行拦截;拦截器包括初始化方法和拦截方法,根据不同的场景动态改变表单控件状态。

作为本发明的进一步方案,所述生成器中通过定义一个新的注解@ControlStatePropMetadata,用来描述控件状态变量;所述生成器根据控件相关的信息生成对应的控件状态变量;

定义生成器接口时,根据控件信息生成控件状态变量,并把控件上的状态值替换成新的控件状态变量。

作为本发明的进一步方案,所述监听器中,定义监听器接口时,包含注册监听方法,监听控件状态的初始值的变化,监听到变化后,通过更新器更新控件状态变量。

作为本发明的进一步方案,所述更新器中,定义更新器接口时,在监听器中监听到初始值的变化,通过更新器更新控件状态变量的值。

作为本发明的进一步方案,所述计算器中,定义计算器接口时,根据控件状态的初始值的类型,计算出属性的初始值。

作为本发明的进一步方案,所述拦截器中,定义拦截器接口时,init方法负责初始化拦截器,intercept方法负责对状态进行拦截;根据不同的场景,定义不同的拦截器类,拦截器类实现拦截器接口。

作为本发明的进一步方案,定义拦截器接口时,还包括定义拦截器服务,拦截器服务用于初始化各个拦截器和依次执行各个拦截器,根据不同的场景,基于拦截器接口,添加不同的状态拦截器实现。

基于上述目的,第二方面,本发明还提供了一种前端表单状态拦截扩展方法,包括以下步骤:

监听器监听到控件状态初始化值变化;

更新器查找需要更新的控件状态变量;

计算机计算控件状态初始值;

拦截器根据不同场景,修改控件状态;

更新器根据拦截器结果,修改控件状态变量;

界面响应,根据修改后控件状态变量控制界面状态。

作为本发明的进一步方案,生成器用于生成代码,生成代码时,根据生成器组件的接口,在HTML中生成控件属性变量,替代原始的控件状态值。

作为本发明的进一步方案,监听初始值的变化时,通过监听器组件,初始化各个拦截器,并注册监听控件状态初始值的变化;其中,通过拦截器服务的init接口,完成各个拦截器的初始化;初始化完成后,再对控件状态初始值的变量注册监听;监听到初始变量的变化后,通过更新器进行更新控件状态变量。

作为本发明的进一步方案,获取需要更新的控件状态变量:根据监听到的变量类型,找出需要更新的控件状态变量;其中,监听到form的变化后,遍历控件状态变量,通过变量的注解中defaultValue的值,是否包含变量form,如果包含则标记为需要更新。

作为本发明的进一步方案,计算控件状态的初始值:通过计算器组件中computeOriginalValue接口,计算出变量的初始值。

作为本发明的进一步方案,对状态进行拦截:根据不同的场景,使用不同的拦截器对控件状态进行拦截,动态修改控件状态;其中,拦截器服务一次遍历执行各个拦截器的拦截接口,在各个拦截器动态修改interceptContext.value;根据拦截处理后的interceptContext.value,在更新器中修改控件状态变量的值,界面状态和控件状态变量绑定,界面进行响应,表单控件状态变化。

本发明的又一方面,还提供了一种计算机设备,包括存储器和处理器,该存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述任一项根据本发明的前端表单状态拦截扩展方法。

本发明的再一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被执行时实现上述任一项根据本发明的前端表单状态拦截扩展方法。

与现有技术相比较而言,本发明提出的一种前端表单状态拦截扩展方法及系统,具有以下有益效果:

1.提高开发效率:本方法及系统通过自动生成控件状态变量,减少了手动编写大量代码的需求。开发人员可以更快速地实现表单控件状态的动态管理,从而提高开发效率。

2.灵活性与可维护性:通过拦截器和监听器的结合,本方法及系统实现了对表单控件状态的高度灵活性。开发人员可以根据具体需求定义不同的拦截器,实现不同场景下的状态控制,而无需修改大量现有代码。这提高了代码的可维护性和可扩展性。

3.减少错误和Bug:由于减少了手动编写大量代码的机会,这一方法减少了潜在的错误和Bug的出现。生成器组件的使用确保了控件状态变量的正确生成,减少了人为错误的风险。

4.动态适应性:本方法及系统可以应用于多种场景,包括流程状态管理、流程节点配置等。通过选择不同的拦截器,系统可以适应不同的应用需求,使其更加通用和具有广泛的适用性。

5.提升用户体验:通过动态管理表单控件的可见性、禁用状态和只读属性,本方法及系统有助于提升用户体验。用户将能够看到仅在特定情况下可见的控件,同时减少了不必要的操作,提供了更流畅和直观的界面。

6.降低开发成本:通过减少手动编写代码的需求,这一方法降低了开发成本。开发团队可以更快速地构建和维护应用程序,从而减少了开发项目的总体成本。

7.支持复杂逻辑:通过引入计算器组件,本方法及系统支持表单状态的复杂逻辑。开发人员可以定义各种表单状态变量的计算规则,以适应多样化的应用需求。

综上所述,本发明的前端表单状态拦截扩展方法及系统为前端开发提供了一种高效、灵活和可维护的方式来管理表单控件状态,从而提升了开发效率、用户体验,降低了开发成本,并减少了错误的风险。

本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

在图中:

图1为本发明实施例的一种前端表单状态拦截扩展方系统的结构示意图。

图2为本发明实施例的一种前端表单状态拦截扩展系统中拦截器服务、拦截器接口、拦截器实现类的示意图。

图3为本发明实施例的一种前端表单状态拦截扩展方法的流程图。

具体实施方式

下面,结合附图以及具体实施方式,对本申请做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备固有的其他步骤或单元。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

由于传统的表单状态控制时存在以下问题:通常对表单状态进行控制时,表单状态的控制逻辑在表单中,表单逻辑和状态控制耦合在一起。当在新的场景下,需要改变表单状态时,需要修改原有的表单逻辑,对原有代码产生侵入性,使得表单功能变得不稳定;一个web表单通常需要运行在不同的环境下,例如当一个表单需要提交审批,制单状态下可以编辑所有字段;在第一个审批节点时,可以对A字段进行修改;如果添加了新的审批节点,需要控制只能对B字段修改,传统的需要修改原有的表单状态控制逻辑。在传统的表单状态控制下,当有新的场景时,不容易根据不同的场景进行扩展,在新的场景下对表单进行新的状态控制。

为了把表单自身逻辑和不同场景下的状态控制进行解耦,本发明提出了一种前端表单状态拦截扩展方法及系统,通过实现系列的接口,来解决表单控件状态拦截扩展问题。

参见图1所示,本发明的实施例提供了一种前端表单状态拦截扩展系统,,包括以下组件:

生成器,用于根据表单控件的相关信息,生成对应的控件状态变量,并将表单控件的状态值替换成新的控件状态变量;

监听器,用于注册监听控件状态的初始值的变化。它监听到变化后,通过更新器组件来更新控件状态变量;

更新器,用于根据监听器监听到的初始值的变化,更新控件状态变量的值,实现动态控制表单控件状态;

计算器,用于根据控件状态的初始值的类型,计算出属性的初始值,包括常量、变量和表达式;

拦截器,用于对控件状态进行拦截;拦截器包括初始化方法和拦截方法,根据不同的场景动态改变表单控件状态。

在本实施例中,所述生成器中通过定义一个新的注解@ControlStatePropMetadata,用来描述控件状态变量,所述生成器根据控件相关的信息生成对应的控件状态变量。示例性的:

定义生成器接口时,根据控件信息生成控件状态变量,并把控件上的状态值替换成新的控件状态变量。示例性的:

在本实施例中,所述监听器中,定义监听器接口时,包含注册监听方法,监听控件状态的初始值的变化,监听到变化后,通过更新器更新控件状态变量。接口定义如下:

interface IControlStateListener{

registerLintener()

}

在本实施例中,所述更新器中,定义更新器接口时,在监听器中监听到初始值的变化,通过更新器更新控件状态变量的值。示例性的:

在本实施例中,所述计算器中,定义计算器接口时,根据控件状态的初始值的类型,计算出属性的初始值。示例性的:

interface ControlStateCounter{

computeOriginalValue(type,value);

}

在本实施例中,所述拦截器中,定义拦截器接口时,init方法负责初始化拦截器,intercept方法负责对状态进行拦截。示例性的:

InitContext:初始化上下文

InterceptContext:拦截上下文

根据不同的场景,定义不同的拦截器类,拦截器类实现拦截器接口。拦截器类都实现拦截器接口(IControlStateInterceptor)。定义了一个流程配置拦截器,根据流程节点的配置动态改变表单控件状态

在本实施例中,定义拦截器接口时,还包括定义拦截器服务,拦截器服务用于初始化各个拦截器和依次执行各个拦截器。

根据不同的场景,基于拦截器接口,添加不同的状态拦截器实现。例如:流程状态拦截器、流程节点配置、其他拦截器,参见图2所示。

参见图3所示,本发明的实施例提供了一种前端表单状态拦截扩展方法,该方法包括以下步骤:

监听器监听到控件状态初始化值变化;

更新器查找需要更新的控件状态变量;

计算机计算控件状态初始值;

拦截器根据不同场景,修改控件状态;

更新器根据拦截器结果,修改控件状态变量;

界面响应,根据修改后控件状态变量控制界面状态。

在本实施例中,生成器用于生成代码,生成代码时,根据生成器组件的接口,在HTML中生成控件属性变量,替代原始的控件状态值。

在本实施例中,监听初始值的变化时,通过监听器组件,初始化各个拦截器,并注册监听控件状态初始值的变化;其中,通过拦截器服务的init接口,完成各个拦截器的初始化;初始化完成后,再对控件状态初始值的变量注册监听;监听到初始变量的变化后,通过更新器进行更新控件状态变量。

在本实施例中,获取需要更新的控件状态变量:根据监听到的变量类型,找出需要更新的控件状态变量;其中,监听到form的变化后,遍历控件状态变量,通过变量的注解中defaultValue的值,是否包含变量form,如果包含则标记为需要更新。

在本实施例中,计算控件状态的初始值:通过计算器组件中computeOriginalValue接口,计算出变量的初始值。

在本实施例中,对状态进行拦截:根据不同的场景,使用不同的拦截器对控件状态进行拦截,动态修改控件状态;其中,拦截器服务一次遍历执行各个拦截器的拦截接口,在各个拦截器动态修改interceptContext.value;根据拦截处理后的interceptContext.value,在更新器中修改控件状态变量的值,界面状态和控件状态变量绑定,界面进行响应,表单控件状态变化。

本发明的一种前端表单状态拦截扩展方法的流程中,生成代码时,本发明拿一个按钮举例,本发明在html中写了以下的按钮组件,v-if表示是否可见,为常量false,disabled表示按钮是否禁用,绑定了变量form.btnState。

相关技术
  • 一种公用垃圾桶
  • 一种办公用固液分离垃圾桶
  • 一种环保型垃圾桶
  • 一种环保型垃圾桶
  • 一种市政用环保型垃圾桶
  • 一种双层式环保型公用垃圾桶
  • 一种可自灭火的环保型双层式垃圾桶
技术分类

06120116517115