OneCode表单架构采用注解驱动+组件化+工厂模式的设计思想,实现了表单的可视化配置与灵活扩展。核心解决了传统表单开发中"重复编码"、"样式不统一"、"难以维护"等痛点,通过将表单拆分为视图配置层、组件层和数据处理层,构建了低代码平台的核心能力。
核心类:CustomFormViewBean
(表单视图配置)、FormLayoutProperties
(布局属性)
autoLayout
属性控制)// 表单布局初始化核心代码
private void initFormLayout(ModuleComponent moduleComponent) {
FormLayoutComponent formLayoutComponent = (FormLayoutComponent) moduleComponent.getCurrComponent();
FormLayoutProperties formLayoutProperties = formLayoutComponent.getProperties();
this.autoLayout = false;
this.init(formLayoutProperties);
if (layoutData != null) {
this.row = layoutData.getRows();
this.col = layoutData.getCols() / 2;
// ... 处理合并单元格逻辑
}
}
核心类:FieldBaseBean
(字段基类)、FormLayoutComponent
(布局容器)
InputFieldBean
、CheckBoxFieldBean
等ComboInputFieldBean
(嵌套InputBean
)FormLayoutComponent
、MFormLayoutComponent
FieldBaseBean
获取公共属性ComponentType
枚举统一管理组件类型核心能力:
xpath
属性建立组件与数据源的映射expression
属性实现字段间的逻辑计算@FormAnnotation
定义表单元数据@AnnotationType(clazz = CheckBoxAnnotation.class)
public class CheckBoxFieldBean extends FieldBaseBean<CheckBoxComponent> {
// ...
}@AnnotationType
关联组件与注解类FormLayoutProperties
支持多种布局模式:
row
/col
属性定义表格结构autoLayout=true
时自动排列组件stretchH
/stretchHeight
控制拉伸行为LayoutMerged
实现复杂表格布局新增表单组件只需三步:
FieldBaseBean
)BaseAnnotation
)ComponentType
枚举中注册组件类型// 伪代码:表单渲染流程
CustomFormViewBean formView = new CustomFormViewBean(moduleComponent);
FormLayoutComponent layout = formView.createLayout();
for(FieldFormConfig field : formView.getFieldConfigs()) {
Component component = WidgetConfigFactory.createComponent(field.getType());
layout.addChild(component);
}
通过LayoutData
实现不规则表单:
OneCode表单架构通过组件化和注解驱动的设计,完美平衡了开发效率与灵活性,为企业级应用提供了强大的表单解决方案。无论是简单的数据采集还是复杂的业务流程表单,都能通过这套架构快速构建并灵活扩展。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。