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)的更多相关文章

  1. 如何在SSM项目配置springMVC校验框架validator

    1.在springMVC配置文件配置添加如下信息 <!-- 表单验证框架 --> <bean id="validator" class="org.spr ...

  2. 4. Validator校验器的五大核心组件,一个都不能少

    困难是弹簧,你弱它就强.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的 ...

  3. Struts2内置校验器——完整实例代码

    一.校验器的配置风格 1.字段校验器: <field name="被校验的字段"> <field-validator type="校验器名"& ...

  4. Bean Validation完结篇:你必须关注的边边角角(约束级联、自定义约束、自定义校验器、国际化失败消息...)

    每篇一句 没有任何技术方案会是一种银弹,任何东西都是有利弊的 相关阅读 [小家Java]深入了解数据校验:Java Bean Validation 2.0(JSR303.JSR349.JSR380)H ...

  5. SpringMVC【校验器、统一处理异常、RESTful、拦截器】

    前言 本博文主要讲解的知识点如下: 校验器 统一处理异常 RESTful 拦截器 Validation 在我们的Struts2中,我们是继承ActionSupport来实现校验的...它有两种方式来实 ...

  6. springMVC学习(7)-springMVC校验

    一.校验理解: 对于安全要求较高点建议在服务端进行校验. 控制层conroller:校验页面请求的参数的合法性.在服务端控制层conroller校验,不区分客户端类型(浏览器.手机客户端.远程调用) ...

  7. SpringMVC之使用Validator接口进行验证

    对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证.SpringMVC自身对数据在服务端的校验有一个比较好的支持,它能将我们提 ...

  8. (十)springMvc 校验

    目录 文章目录 目录 @[toc] springMvc 校验 准备 踩坑 配置校验器 将校验器注入到适配器中 在 pojo 中配置校验规则 在 controller 层进行检验 获取错误信息 将错误信 ...

  9. springMVC 校验时,CustomValidationMessages.properties中的错误提示信息的中文乱码 问题

    今天在学习springmvc的校验时,遇到了CustomValidationMessages.properties配置文件的信息,才错误提示时是乱码的问题:在网上找了很多方法都没解决:最后原来是在配置 ...

随机推荐

  1. maven私服的配置使用

    maven的仓库分为本地仓库,远程仓库和私服仓库. 私服仓库一般是公司内部私有的,内部进行维护的.公司员工连接私服,从私服中下载jar,或者将自身的jar传到私服上.私服还可以从中央仓库下载jar,当 ...

  2. Spring常用注解式开发

    1.组件注册@Configuration.@Bean给容器中注册组件. 注解,@Configuration告诉Spring这是一个配置类,相当于bean.xml配置文件. 注解,@Bean给Sprin ...

  3. C# 管道通信 (client —— server)Framework2.0版本也可用

    //管道服务类public class PipServer { [DllImport("kernel32.dll", SetLastError = true)] public st ...

  4. Linux-正则、grep、sed学习笔记

    一.正则和grep 正则表达式的实现分成了两类: 基本正则表达式(BRE)和扩展的正则表达式(ERE). BRE 和 ERE 之间有什么区别呢?这是关于元字符的问题.BRE 可以辨别以下元字符: ^ ...

  5. SQLi-LABS Page-1(Basic Challenges) Less11-Less22

    Less-11 GET - Blind - Time based - double quotes http://10.10.202.112/sqli/Less-11/ 尝试登录: username:a ...

  6. MSSQL 字段分组拼接

    方法1:缺点,不去重,不去空:见表1 with t as( select 'A' parent, 'A1' child union all select 'A', 'A1' union all sel ...

  7. Linux—chattr 命令详解

    chattr命令的用法:chattr [ -RV ] [ -v version ] [ mode ] files…最关键的是[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu] ...

  8. maven help 插件

    maven help 插件 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins&l ...

  9. POJ3974Palindrome(Manacher)

    传送门 题目大意:求最长回文串 题解:Manacher 代码: #include<cstdio> #include<cstring> #include<iostream& ...

  10. Linux 学习记录二(文件的打包压缩).

    和 window不同,在Linux压缩文件需要注意的是,压缩后的文件会把源文件给替代,无论是gzip.bzip2.xz 均不支持压缩目录,要达到压缩目录的目的,需要用到tar指令.   gzip 压缩 ...