springMVC校验器(validator)
springmvc使用的是Hibernate Validator(和Hibernate的ORM无关)来完成校验功能
一.普通校验
1.导入jar包
2.编写校验错误配置文件


3.配置校验错误信息文件
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- 资源文件名,这里property的name为basenames所以错误信息的配置文件CustomValidationMessages省去后缀 -->
<property name="basenames">
<list>
<value>classpath:ItemValidationMessages</value>
</list>
</property>
<!-- 资源文件编码格式 -->
<property name="fileEncodings" value="UTF-8" />
<property name="defaultEncoding" value="UTF-8"/>
<!-- 对资源文件内容缓存时间,单位秒 -->
<property name="cacheSeconds" value="120" />
</bean>
4.配置校验器
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<!-- 指定校验器提供方 -->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
<!-- 指定校验使用的资源文件,如果不指定默认使用classpath下的ValidationMessages.properties -->
<property name="validationMessageSource" ref="messageSource"/>
</bean>
5.将校验器注入到适配器中
<!-- 使用<mvc:annotation-driven>可以代替单个配置注解映射器和注解适配器 ,它默认加载很多参数绑定方法
比如json转换解析器就默认加载了,实际开发用这个
validator="":校验器注入到适配器中-->
<!-- 默认的注解映射的支持 -->
<mvc:annotation-driven validator="validator"></mvc:annotation-driven>
6.类属性中定义规则
@Size(min=1,max=30,message="{item.itemname.length.erro}")
private String itemname;
@NotNull(message="{item.price.isNULL}")
private Double price;
7.在controller中处理数据错误
/*1.在需要校验的pojo前边添加注解@Validated,在需要校验的pojo后面添加BindingResult bindingResult接收校验出错信息
注意:@Validated和BindingResult bindingResult是配对出现的,并且形参顺序是固定的(一前一后)
value={ItemGroup1.class}:指定使用ItemGroup1的分组校验*/
@RequestMapping("/editItemSubmit")
public ModelAndView editItemSubmit(HttpServletRequest request,@Validated(value={ItemGroup1.class}) ItemCustom itemCustom, BindingResult bindingResult) throws Exception{
//如果有错误
if(bindingResult.hasErrors()) {
//获取错误信息
List<ObjectError> allErrors = bindingResult.getAllErrors();
ModelAndView modelAndView = new ModelAndView();
//将错误信息传到jsp页面中
modelAndView.addObject("allErrors", allErrors);
modelAndView.setViewName("item/editItem");
return modelAndView;
}
itemService.updateItem(itemCustom);
ModelAndView modelAndView = new ModelAndView("redirect:/item/queryItems.action");
return modelAndView;
}
8.测试
二.分组校验
分组校验其实就是为了我们的校验更加灵活,有的时候,我们并不需要把我们当前配置的属性都进行校验,而需要的是当前的方法仅仅校验某些的属性。那么此时,我们就可以用到分组校验了...
1.定义分组的接口【主要是标识】


2.定于校验规则属于哪一各组
groups:指定此校验属性属于哪个分组(接口)
@Size(min=1,max=30,message="{item.itemname.length.erro}",groups={ItemGroup1.class,ItemGroup2.class})
private String itemname;
@NotNull(message="{item.price.isNULL}",groups={ItemGroup2.class})
private Double price;
3.在Controller方法中定义使用校验分组
红色部分:@Validated(value={ItemGroup1.class})
@RequestMapping("/editItemSubmit")
public ModelAndView editItemSubmit(HttpServletRequest request,
@ModelAttribute("itemCustom") @Validated(value={ItemGroup1.class}) ItemCustom itemCustom, BindingResult bindingResult,MultipartFile item_pic) throws Exception{
springMVC校验器(validator)的更多相关文章
- 如何在SSM项目配置springMVC校验框架validator
1.在springMVC配置文件配置添加如下信息 <!-- 表单验证框架 --> <bean id="validator" class="org.spr ...
- 4. Validator校验器的五大核心组件,一个都不能少
困难是弹簧,你弱它就强.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的 ...
- Struts2内置校验器——完整实例代码
一.校验器的配置风格 1.字段校验器: <field name="被校验的字段"> <field-validator type="校验器名"& ...
- Bean Validation完结篇:你必须关注的边边角角(约束级联、自定义约束、自定义校验器、国际化失败消息...)
每篇一句 没有任何技术方案会是一种银弹,任何东西都是有利弊的 相关阅读 [小家Java]深入了解数据校验:Java Bean Validation 2.0(JSR303.JSR349.JSR380)H ...
- SpringMVC【校验器、统一处理异常、RESTful、拦截器】
前言 本博文主要讲解的知识点如下: 校验器 统一处理异常 RESTful 拦截器 Validation 在我们的Struts2中,我们是继承ActionSupport来实现校验的...它有两种方式来实 ...
- springMVC学习(7)-springMVC校验
一.校验理解: 对于安全要求较高点建议在服务端进行校验. 控制层conroller:校验页面请求的参数的合法性.在服务端控制层conroller校验,不区分客户端类型(浏览器.手机客户端.远程调用) ...
- SpringMVC之使用Validator接口进行验证
对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证.SpringMVC自身对数据在服务端的校验有一个比较好的支持,它能将我们提 ...
- (十)springMvc 校验
目录 文章目录 目录 @[toc] springMvc 校验 准备 踩坑 配置校验器 将校验器注入到适配器中 在 pojo 中配置校验规则 在 controller 层进行检验 获取错误信息 将错误信 ...
- springMVC 校验时,CustomValidationMessages.properties中的错误提示信息的中文乱码 问题
今天在学习springmvc的校验时,遇到了CustomValidationMessages.properties配置文件的信息,才错误提示时是乱码的问题:在网上找了很多方法都没解决:最后原来是在配置 ...
随机推荐
- IT兄弟连 HTML5教程 HTML5表单 HTML表单设计1
表单是PHP程序中最常使用的收集站点访问者信息的数据输入界面.通过表单浏览器获取用户的输入数据,并传送给Web服务器的脚本程序中,以各种不同的方式进行处理.在表单中提供了多种输入方式,包括文本输入域. ...
- java8-计算时间差的方法
一.简述 在Java8中,我们可以使用以下类来计算日期时间差异: 1.Period 2.Duration 3.ChronoUnit 二.Period类 主要是Period类方法getYears(),g ...
- Django之web框架原理
Web框架原理 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 先写一个 原始的web框架 imp ...
- PostgreSQL 查询、创建、删除索引
--查询索引 select * from pg_indexes where tablename='tab1'; --创建索引 tab1_bill_code_index 为索引名, create ind ...
- s3c2440裸机-时钟编程(一、2440时钟体系介绍)
1.总线框架 下图是2440的总线框架,其中有AHB(Advanced High performance Bus)高速总线,APB(Advanced Peripheral Bus)外围总线. 不同总线 ...
- Ubuntu下Xilinx Linux内核编译问题,出现“缺少ncurses”libraries
对官方提供的内核源码包进行解压缩,进入到内核目录,使用make menuconfig后,发现提示以下错误: *** Unable to find the ncurses libraries or th ...
- 不依赖官方LibPack编译FreeCAD的一次尝试
在Windows下编译FreeCAD,通常的方法是依赖官方提供的LibPack,但是只有vs2008, vs2012, vs2013等几个版本提供.比如现在感觉vs2017比较好用,可是没有官方Lib ...
- 定义私有指令 v-fontweight
// 这是一个私有的指令 他是在vm这个实例对象里里面的 所以说是私有的 directives 多一个s // 在css中是font-Weight.在第二个字母的大写该为小写,去掉横线. // 这中写 ...
- 利用Mac的功能键|如何在Mac上使用F键
Mac键盘的顶部是一组按键,这些按键的特征是F后跟1-12数字.这些键称为Mac功能键,使您可以通过按几个键来更改某些设置并快速访问Mac功能. 如果您是Mac的所有者,是时候学习这些键各自可以做什么 ...
- Codeforces Round #598 (Div. 3)
传送门 A. Payment Without Change 签到. Code /* * Author: heyuhhh * Created Time: 2019/11/4 21:19:19 */ #i ...