博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net转Java自学之路—SpringMVC框架篇四(校验)
阅读量:5957 次
发布时间:2019-06-19

本文共 2075 字,大约阅读时间需要 6 分钟。

SpringMVC使用Hibernate的校验框架validation(和Hibernate没有关系)。

页面提交请求的参数,请求到Controller方法中,使用validation进行校验。除去使用校验Jar包外,还需要在SpringMVC.xml中来配置validation校验器。

classpath:validationMessageSource

  将校验器注入到处理器适配器中

  在validationMessageSource.properties中配置校验错误信息。如:

goods.name.size.msg=输入的名称长度在1到20个字符之间goods.time.isNULL=时间不能为空
public class Goods{    @Size(min=1,max=20,message="{goods.name.size.msg}")    private String name;        @NotNull(message="{goods.time.isNULL}")    private Date time;        //GET/SET Code...}

捕获校验错误信息:

  在需要校验的controller方法的形参pojo前加入@Validated,pojo后面添加BindingResult bindingResult接收校验出错信息。

  注:@Validation和BindingResult是配对出现的。并且形参顺序是固定的。

public String edit(Model model,Integer id,@Validated GoodsCustom goodsCustom,BindingResult bindingResult) throws Exception{    //判断是否有错误信息    if(bindingResult.hasErrors()){        //输出错误信息        List
allerr = bindingResult.getAllErrors(); for(ObjectError oe : allerr){ //得到错误信息 oe.getDefaultMessage(); } }}

  然后再controller方法中捕获的错误信息传到页面中

model.addAttribute("AllError",allerr);

分组校验:

  在pojo中帝国一校验规则,而pojo是被多个controller所公用,当不同的controller方法对同一个pojo进行校验,但每个controller方法需要不同的校验规则。

  综上所述,则需要定义多个校验分组(Java接口),分组中定义有校验规则。每个controller方法使用不同的校验分组。

public interface ValidatedGroupOne{    //接口中不需要定义任何方法,仅是对不同的校验规则进行分组    //如当前分组只校验名称长度}

  在校验规则中用groups指定此校验属于那个分组,groups可以定义多个分组。

public class Goods{        @Size(min=1,max=20,message="{goods.name.size.msg}",groups={ValidatedGroupOne.class})    private String name;        @NotNull(message="{goods.time.isNULL}")    private Date time;}

  在controller方法中使用分组校验:@Validated(value={分组校验接口.class})指定使用那个分组的校验。

public String edit(Model model,Integer id,@Validated(value={ValidatedGroupOne.class}) GoodsCustom goodsCustom,BindingResult bindingResult) throws Exception{}

转载于:https://www.cnblogs.com/zltao/p/10665620.html

你可能感兴趣的文章
linuxliveu盘怎么用_怎么用U盘重装系统?
查看>>
文件上载限制4gb_科普一下FAT32和NTFS两种文件系统的区别
查看>>
ant指定servlet版本_数据版本控制之Flyway
查看>>
go 修改结构体方法_Go语言基础:结构体
查看>>
前端radio单选框默认选中_WEB前端,form表单
查看>>
不需要软著的安卓应用市场_开发APP应用不可缺少的五项工作
查看>>
win7开启ftp被动模式_【扫盲】FTP基础知识详解
查看>>
编程心得体会_Code snippet在手,编程不愁!
查看>>
linux图形界面sdk,Linux SDK入门指南
查看>>
国际学院c语言作业,C语言程序的国际化
查看>>
四阶龙格库塔法c语言程序,四阶龙格库塔法C语言(西安交大)
查看>>
c语言中无windows函数库,关于C语言, GCC/MSVC中,如何写出一个真正意义上的不依赖库的程序?...
查看>>
欧洲语言框架A1到C2,法语等级 A1、A2、B1、B2、C1、C2
查看>>
c语言中以追加只写方式打开文本文件,C语言中打开文件读取,写入的操作
查看>>
c语言编程 企业发放,求c语言编程企业员工全年销售额统计及奖金发放系..._统计师_帮考网...
查看>>
C语言编辑中午和英语库,懂英语和C语言的来
查看>>
c语言cabd快速查询的方法,滨州医学院 数据结构C语言版习题精选
查看>>
c语言中秋log10的函数,10本科生的C++成长轨迹7 - ACM培训:数组&函数&指针
查看>>
android 设备运营商,Android设备悲剧:新技术让运营商可以向设备“偷偷”安装软件...
查看>>
html语言link,HTML <link>标签
查看>>