jeecgboot表单数据校验
时间: 2024-12-25 21:20:43 浏览: 15
### JeecgBoot 中表单数据校验的方法和实现
在 JeecgBoot 框架中,为了确保输入的数据符合预期的标准,在多个层面实现了表单数据的校验机制。
#### 后端校验逻辑
对于后端部分,当涉及到复杂业务逻辑或数据库操作时,通常会在服务层进行严格的参数验证。特别是针对自定义业务需求,可以通过扩展接口来增强系统的灵活性与健壮性[^2]:
```java
// 假设有一个用户注册功能需要额外增加手机号码格式检查
public interface IUserService extends IService<User> {
boolean checkPhoneFormat(String phone);
}
@Service
public class UserServiceImpl implements IUserService {
@Override
public boolean checkPhoneFormat(String phone) {
String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(phone);
return m.matches();
}
}
```
如果是在处理在线表单生成器中的数据,则需要注意特定模块下的 `MyIOnlCgformSqlServiceImpl` 类里是否有相应的 `checkData()` 方法被正确覆盖并实现必要的检验规则。
#### 前端校验逻辑
而在前端方面,JeecgBoot 使用了 Ant Design Vue 这样的 UI 库来进行界面构建,并通过内置的形式化工具完成即时反馈式的客户端侧验证工作[^3]。下面展示了一个简单的例子说明如何设置字段级别的约束条件:
```javascript
const rules = reactive({
name: [
{ required: true, message: '请输入名称', trigger: 'blur' },
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
],
code: [{ validator: uniqueCodeValidator, trigger: 'change' }]
})
function uniqueCodeValidator(rule, value, callback){
if (!value || !/^\w+$/.test(value)) {
return callback(new Error('编码只能包含字母、数字'))
} else {
// 调用API查询该code是否存在重复项
api.checkUnique({ field:'code', value }).then(res => {
res ? callback() : callback(new Error('此编码已存在'));
})
}
}
```
上述代码片段展示了两个不同类型的校验方式:一个是基于字符串长度的基础校验;另一个则是异步调用服务器端 API 来确认某个唯一性的属性(比如编码)是否已经被占用。
阅读全文