# form **Repository Path**: dufafei/form ## Basic Information - **Project Name**: form - **Description**: 动态表单 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-24 - **Last Updated**: 2026-05-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Form 一个用于从 Java Bean 自动生成表单定义并进行校验的 Java 库。 ## 简介 Form 是一个轻量级的表单生成和验证框架,通过注解的方式将 Java Bean 转换为表单定义,支持多种表单项类型、字段依赖、国际化以及数据回填。 ## 主要特性 - **注解驱动**:通过 `@InputBox`、`@SelectBox`、`@TableBox`、`@UploadBox` 等注解定义表单字段 - **自动提取**:从 Java Bean 自动提取表单结构和元数据 - **数据回填**:支持将表单数据注入回 Java Bean - **字段依赖**:支持定义字段间的依赖关系 - **国际化支持**:内置 i18n 机制,支持多语言 - **加密功能**:支持对输入框进行加密处理 - **验证机制**:提供多级验证结果(OK、Suggest、Warn、Error) ## 组件说明 ### 核心类 | 类名 | 说明 | |------|------| | `Form` | 表单主类,包含表单项、验证规则和依赖关系 | | `FormBeanMapper` | 表单与 Bean 之间的相互转换 | | `FormItem` | 表单项基类(抽象类) | | `FormValidation` | 验证结果,包含验证级别和消息 | | `FormValidator` | 验证器接口 | ### 表单项类型 | 类型 | 注解 | 说明 | |------|------|------| | 输入框 | `@InputBox` | 支持占位符、加密等特性 | | 下拉框 | `@SelectBox` | 支持选项配置 | | 表格 | `@TableBox` | 表格形式展示 | | 上传 | `@UploadBox` | 文件上传控件 | ### 注解 - `@InputBox` - 标记输入框字段 - `@SelectBox` - 标记下拉框字段 - `@TableBox` - 标记表格字段 - `@UploadBox` - 标记上传字段 - `@Parent` - 标记依赖关系 - `@FormRule` - 验证规则定义 ## 快速开始 ### 1. 添加依赖 ```xml com.gitee.dufafei form 1.0.0 ``` ### 2. 定义表单 Bean ```java public class UserForm { @InputBox private String username; @InputBox(encrypt = true) private String password; @SelectBox private String role; @UploadBox private String avatar; // getters and setters } ``` ### 3. 提取表单定义 ```java // 创建国际化消息接口 I118nMessageInterface i118n = new I118nMessage(UserForm.class); Locale locale = Locale.CHINA; // 从 Bean 提取表单定义 Form form = FormBeanMapper.extract(i118n, locale, new UserForm(), false); // 获取表单项 List items = form.getItems(); ``` ### 4. 注入数据到 Bean ```java UserForm user = new UserForm(); Map formData = new HashMap<>(); formData.put("username", "张三"); formData.put("password", "encrypted_password"); FormBeanMapper.inject(user, formData); ``` ## 国际化配置 项目内置了常用的验证消息 key: - `form.validation.min_length` - 最小长度验证 - `form.validation.max_length` - 最大长度验证 - `form.validation.regex` - 正则表达式验证 可以在资源文件中自定义这些消息。 ## 验证结果级别 ```java FormValidation.ok(prop, text) // 通过 FormValidation.suggest(prop, text) // 建议 FormValidation.warn(prop, text) // 警告 FormValidation.error(prop, text) // 错误 ``` ## 许可证 MIT License