本节主要介绍创建自定义 Spring 验证器时需要实现的 Validator 接口和工具类 ValidationUtils。

Validator接口

创建自定义 Spring 验证器需要实现 org.springframework.validation.Validator 接口,该接口有两个接口方法:

boolean supports(Class<?> klass)
void validate(Object object,Errors errors)

当 supports 方法返回 true 时,验证器可以处理指定的 Class。validate 方法的功能是验证目标对象 object,并将验证错误消息存入 Errors 对象。

往 Errors 对象存入错误消息的方法是 reject 或 rejectValue,这两个方法的部分重载方法如下:

void reject(String errorCode)
void reject(String errorCode,String defaultMessage)
void rejectValue(String filed,String errorCode)
void rejectValue(String filed,String errorCode,String defaultMessage)

在一般情况下只需要给 reject 或 rejectValue 方法一个错误代码,Spring MVC 框架就会在消息属性文件中查找错误代码,获取相应错误消息。具体示例如下:

if(goods.getGprice() > 100 || goods.getGprice() < 0){errors.rejectValue("gprice","gprice.invalid");  // gprice.invalid为错误代码
}

ValidationUtils 类

org.springframework.validation.ValidationUtils 是一个工具类,该类中有几个方法可以帮助用户判定值是否为空。

例如:

if(goods.getGname()==null || goods.getGname().isEmpty()) {errors.rejectValue("gname","goods.gname.required")
}

再如:

if(goods.getGname() == null || goods.getGname().trim().isEmpty()) {errors.rejectValue("gname","goods.gname.required")
}

上述 if 语句可以编写成:

//gname为goods对象的属性
ValidationUtils.rejectIfEmptyOrWhitespace(errors,"gname","goods.gname.required");

由于篇幅有限,大家可参考《Spring MVC验证器应用实例》教程巩固学习。

Spring MVC验证器:Validator接口和ValidationUtils类相关推荐

  1. Spring MVC验证器应用实例(超详细)

    本节使用一个应用 springMVCDemo08 讲解 Spring 验证器的编写及使用.该应用中有一个数据输入页面 addGoods.jsp,效果如图 1 所示. 有一个数据显示页面 goodsLi ...

  2. Spring MVC拦截器~~~登陆验证拦截

    [ 30 分 钟 轻 松 入 门 Spring MVC][web 三 大 组 件 之 ~ ~ Filter 过 滤 器] Interceptor 拦截器学习: 1.了解spring mvc拦截器的概念 ...

  3. spring mvc拦截器_Spring MVC拦截器示例

    spring mvc拦截器 我认为现在是时候看看Spring的MVC拦截器机制了,这种机制已经存在了很多年,并且是一个非常有用的工具. Spring Interceptor会按照提示说:在传入的HTT ...

  4. [Spring mvc 深度解析(三)] 创建Spring MVC之器

    第9章 创建Spring MVC之器 ​ 本章将分析Spring MVC自身的创建过程.首先分析Spring MVC的整体结构,然后具体分析每一层的创建过程. 1 整体结构介绍 Spring MVC中 ...

  5. 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor

    [Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...

  6. Java Spring MVC框架 VIII 之 Spring MVC拦截器

    Java Spring MVC框架 VIII 之 Spring MVC拦截器 Spring MVC拦截器 1.拦截器简介 拦截器是SpringMvc框架提供的功能 它可以在控制器方法运行之前或运行之后 ...

  7. spring mvc 拦截器拦截jsp页面

    spring mvc 拦截器怎么拦截jsp页面 你这个 是拦截带 /jsp 的 .do请求 解决方案 用spring 的拦截器 去拦截 所有的 .do 请求, 然后写一个 过滤器去拦截 所有的.jsp ...

  8. 使用session监听+spring MVC拦截器禁止用户重复登录

    在许多web项目中,需要禁止用户重复登录.一般来说有两种做法: 一是在用户表中维护一个字段isOnLine(是否在线),用户登录时,设定值为true,用户退出时设定为false,在重复登录时,检索到该 ...

  9. Spring MVC拦截器实现用户登录权限验证案例

    本节将通过拦截器来完成一个用户登录权限验证的 Web 应用 springMVCDemo07,具体要求如下:只有成功登录的用户才能访问系统的主页面main.jsp,如果没有成功登录而直接访问主页面,则拦 ...

最新文章

  1. 阿里达摩院新研究:实习生一作突破自动驾驶技术难题,首次实现3D物体检测精度与速度兼得...
  2. IDEA 在线翻译插件
  3. python条件语句-Python3 条件控制
  4. 我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种!
  5. 两台虚拟服务器如何级联,[教程] 利用open vswitch建立vxlan隧道实现不同主机上的虚拟交换机级联...
  6. pythonwhile循环怎么修改数据类型_python开发学习day05 (while循环; for循环; 数字类型操作)...
  7. [USACO09OCT]热浪Heat Wave
  8. 20172313 2018-2019-1 《程序设计与数据结构》第六周学习总结
  9. 随想录(工作后的一点思考)
  10. 焊缝标注vlx实用程序_【CAD自动标注插件下载】CAD自动标注插件yjbz.VLX v1.0 最新版-开心电玩...
  11. jabber服务器_最近JavaScript Jabber播客-Microsoft(而非Microsoft)和Web
  12. ofd电子文档内容分析工具(分析文档、签章和证书)
  13. 基线_项目管理之答疑解惑:基准与基线??
  14. 2022美国大学生数学建模竞赛C题摘要及总结
  15. 鸿蒙系统手机电脑互传文件,效率提升利器,手机与电脑之间如何快速传输文件?...
  16. python实现网络与IP地址计算
  17. [Unity3D]手机3D游戏开发:FPS射击游戏中瞄准镜CrossHair的制作
  18. Arduino手动添加ESP32相关开发板(图文并茂)
  19. 第41章 RS-485通讯实验—零死角玩转STM32-F429系列
  20. 超分辨率——综述文章

热门文章

  1. linux脚本中swith,BeanShell中switch语句
  2. vSAN其实很简单-如何处理“vSAN磁盘写满”问题?
  3. Spring学习总结(25)——注解@PostConstruct和@PreDestroy使用总结
  4. 一阶倒立摆的输入和输出是什么_了解一阶高通滤波器传递函数
  5. ca 自建 颁发证书_自建 ca 及使用 ca 颁发证书
  6. SpringBoot系列: 与Spring Rest服务交互数据
  7. 字符串转命令行字符图片
  8. 03bash特性详解
  9. ————————C语言中快速排序方法——————————————
  10. JavaScript中的函数表达式