springmvc之如何对表单数据进行校验
1、spring4.0拥有自己独立的数据校验框架,同时还支持JSR303标准。
2、spring在进行数据绑定时,可同时调用校验框架完成数据校验工作。在springmvc中,可直接通过注解驱动的方式进行数据校验。
3、spring的LocalValidatorFactoryBean既实现了spring的Validator接口,也实现了JSR303的Validator接口,只要在spring容器中定义一个LocalValidatorFactoryBean,即可将其注入到需要的数据校验Bean中。
4、spring本身并没有提供JSR303的实现,所以必须将JSR所需的包放到类路径下。
5、<mvc:annotation-driven>会默认装配好一个LocalValidatorFactoryBean,通过在处理方法的入参上标注@Valid注解即可让springmvc在完成数据绑定后执行数据校验的工作。
6、在已经标注了JSR303注解的表单/命令对象前标注一个@Valid。springmvc框架在将请求参数绑定到入参对象后,就会调用校验框架根据注解声明的校验规则实施校验。
7、springmvc通过对处理方法签名的约束来保存校验结果:前一个表单/命令对象的校验结果保存到随后的入参中,这个保存校验结果的入参必须是BindingResult或Errors类型,这两个类都位于org.springframework.validation包中。
8、需校验的bean对象和其绑定结果对象或错误对象是成对出现的,它们之间不允许声明其它的入参。
9、Errors接口提供了获取错误信息的方法,如getErrorCount()或getFieldErrors(String field)。
10、BindingResult扩赞了Errors接口。
加入以下包:
在spingmvc.xml文件中配置:
<mvc:annotation-driven></mvc:annotation-driven>
然后就可以为需要的字段加上验证:
@NotEmpty
private String lastName;
@Email
private String email;
如果发生el包的异常,我们要删除tomcat的lib文件夹下的el.api.jar,
同时加入相匹配的包:
el.api-2.2.jar
javax.el-2.2.4.jar
javax.el-api-2.2.4.jar
在Handler中我们就可以这么使用:
@RequestMapping(value="/emp",method=RequestMethod.POST)
public String save(@Valid Employee employee, BindingResult result, Map<String,Object> map) {
System.out.println("save-->"+employee);
if (result.getErrorCount()>0) {
System.out.println("出错了");
for(FieldError error:result.getFieldErrors()) {
System.out.println(error.getField()+":"+error.getDefaultMessage());
}
map.put("departments", departmentDao.getDepartments());
return "add";
}
employeeDao.save(employee);
return "redirect:/emps";
}
用BindingResult来接收验证信息,并进行在控制台中打印错误信息,然后跳转到本修改界面。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- c语言学生成绩管理系统源码
- web基础随笔
- 一次完整的JVM堆外内存泄漏故障排查记录
- ToughRADIUS 结合 Ldap 实现动态密码认证和MAC认证
- coscmd的应用
- scheduler-设计与实现
- 3分钟短文:太爽了,用Laravel写API接口!
- Spring mvc文件上传实现
- 「Mysql优化大师三」查询执行计划explain详解,含案例
- flutter BottomAppBar实现不规则底部导航栏
- Yarr:一个UI很漂亮的RSS阅读器
- kotlin Standard中的内联函数示例详解
- 解决react-native软键盘弹出挡住输入框的问题
- flutter编写精美的登录页面
- Flutter实现App功能引导页