# 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