Spring Validation模块用于表单数据验证配置,示例如下

依赖Jar包

  1. <dependency>
  2. <groupId>javax.validation</groupId>
  3. <artifactId>validation-api</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.hibernate</groupId>
  7. <artifactId>hibernate-validator</artifactId>
  8. </dependency>

Controller方法

  1. /**
  2. * 添加酒店
  3. * @param hotel
  4. * @param bindingResult
  5. * @return
  6. */
  7. @RequestMapping(value = "/add")
  8. // @Valid注释表示需要验证
  9. public String addHotel(@Valid Hotel hotel,
  10. BindingResult bindingResult,
  11. Model model) {
  12. if (hotel.getName() == null) {
  13. // 显示添加页面
  14. model.addAttribute(HOTEL, new Hotel());
  15. return "hotel/addHotel";
  16. } else {
  17. // 验证失败时回到本页面并显示错误信息
  18. if (bindingResult.hasErrors())
  19. return "hotel/addHotel";
  20. hotelService.addHotel(hotel);
  21. return "redirect:/hotel/list";
  22. }
  23. }

需要验证的bean配置

  1. package com.qunar.bean;
  2.  
  3. import org.hibernate.validator.constraints.Length;
  4. import org.hibernate.validator.constraints.NotEmpty;
  5.  
  6. import javax.validation.constraints.NotNull;
  7. import javax.validation.constraints.Pattern;
  8.  
  9. public class Hotel {
  10.  
  11. private Integer id;
  12.  
  13. @NotNull(message = "酒店代码不能为空")
  14. @NotEmpty(message = "酒店代码不能为空")
  15. @Pattern(regexp = "\\w+",
  16. message = "酒店代码不能包含特殊字符")
  17. @Length(max = 45, message = "酒店代码最长为45个字符")
  18. private String code;
  19.  
  20. @NotNull(message = "酒店名称不能为空")
  21. @NotEmpty(message = "酒店名称不能为空")
  22. @Pattern(regexp = "([\\u4e00-\\u9fa5]|\\w)+",
  23. message = "酒店名称不能包含特殊字符")
  24. @Length(max = 100, message = "酒店名称最长为100个字符")
  25. private String name;
  26.  
  27. public Integer getId() {
  28. return id;
  29. }
  30.  
  31. public void setId(Integer id) {
  32. this.id = id;
  33. }
  34.  
  35. public String getCode() {
  36. return code;
  37. }
  38.  
  39. public void setCode(String code) {
  40. this.code = code == null ? null : code.trim();
  41. }
  42.  
  43. public String getName() {
  44. return name;
  45. }
  46.  
  47. public void setName(String name) {
  48. this.name = name == null ? null : name.trim();
  49. }
  50. }

页面

  1. <%--
  2. Created by IntelliJ IDEA.
  3. User: zhenwei.liu
  4. Date: 13-7-30
  5. Time: 上午11:50
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  9. <%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
  10. <%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8" %>
  11. <html>
  12. <head>
  13. <title>添加酒店</title>
  14. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  15. </head>
  16. <body>
  17. <sf:form action="/hotel/add" method="POST" modelAttribute="hotel">
  18. <table>
  19. <tr>
  20. <td align="right">酒店代码</td>
  21. <td><input type="text" name="code"/></td>
  22. <td><sf:errors path="code" cssClass="error" /> </td>
  23. </tr>
  24. <tr>
  25. <td align="right">酒店名称</td>
  26. <td><input type="text" name="name"/></td>
  27. <td><sf:errors path="name" cssClass="error" /> </td>
  28. </tr>
  29. <tr>
  30. <td colspan="2" align="center"><input type="submit" value="添加"/>
  31. <input type="reset" value="重置"/></td>
  32. </tr>
  33. </table>
  34. </sf:form>
  35. </body>
  36. </html>

这样当提交这个这个页面表单时,就会验证hotel的各个属性,如验证不通过则回到本页面并显示错误信息

另外,Spring支持自定义验证注解类,加入自己的验证规则,具体例子可以参考以下

http://outbottle.com/custom-annotated-validation-with-spring-3-web-mvc/

Spring Validation的更多相关文章

  1. Spring表单验证(Spring Validation)

    1.基本介绍 之前在项目中做的后台验证就是Spring Validation,最近闲下来了,就来整理一下. 从Spring3.0开始,Spring MVC中提供了对java校验的API支持.在Spri ...

  2. 使用spring validation完成数据后端校验

    前言 数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的校验.但是为了避免用户绕过浏览器,使用http工具直接向后端请求 ...

  3. Spring validation 后端校验【转】

    本文来自 下一秒升华 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u013815546/article/details/77248003?utm_source=co ...

  4. JSR303/JSR-349,hibernate validation,spring validation 之间的关系

    JSR303是一项标准,JSR-349是其的升级版本,添加了一些新特性,他们规定一些校验规范即校验注解,如@Null,@NotNull,@Pattern,他们位于javax.validation.co ...

  5. 使用spring validation完成数据后端校验-自定义校验的注解-判断是否为空

    引入依赖 我们使用maven构建springboot应用来进行demo演示. <dependencies> <dependency> <groupId>org.sp ...

  6. @Validated和@Valid区别:Spring validation验证框架对入参实体进行嵌套验证必须在相应属性(字段)加上@Valid而不是@Validated

    Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR- ...

  7. 使用Spring Validation优雅地校验参数

    写得好的没我写得全,写得全的没我写得好 引言 不知道大家平时的业务开发过程中 controller 层的参数校验都是怎么写的?是否也存在下面这样的直接判断? public String add(Use ...

  8. Spring Validation最佳实践及其实现原理,参数校验没那么简单!

    之前也写过一篇关于Spring Validation使用的文章,不过自我感觉还是浮于表面,本次打算彻底搞懂Spring Validation.本文会详细介绍Spring Validation各种场景下 ...

  9. Spring Validation 表单校验

    最近开发一个项目,发现字段校验比较多,同事提出使用Validation校验能更方便一些,今天记录下来,供以后参考: 一.在pom.xml中添加依赖: <dependency> <gr ...

随机推荐

  1. 【POJ】3270.Cow Sorting

    题解 用到一点群论的知识! 我们发现把操作写成一个置换后,一定是单个置换圈的内进行操作,把置换圈进行扩大的操作不优 我们有两个办法,一个是用全局最小的换进来,代替这个圈里最小的值,交换操作完成后再换出 ...

  2. Ubuntu16.04下Kylin的安装与配置

    一.系统环境 kylin的安装配置并不像官方文档中描述的那样简单,复杂的原因在于hadoop,hive,hbase,kylin的版本一定要兼容,不然就会出现各种奇怪的错误.以下各软件版本可以成功运行k ...

  3. hdoj2546 饭卡(DP,01背包)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2546 思路 首先要判断卡里的钱是不是大于等于5元,如果不足5元,直接输出余额:如果大于等于5元,则先留 ...

  4. mysql分布式集群实现原理

    做MySQL集群,例如:利用mysql cluster ,mysql proxy,mysql replication,drdb等等 有人会问mysql集群,根分表有什么关系吗?虽然它不是实际意义上的分 ...

  5. beeshell —— 开源的 React Native 组件库

    介绍 beeshell 是一个 React Native 应用的基础组件库,基于 0.53.3 版本,提供一整套开箱即用的高质量组件,包含 JavaScript(以下简称 JS)组件和复合组件(包含 ...

  6. 一台电脑如何安装多个版本的JDK

    1 . 准备两个版本的jdk我的两个jdk路径为:  C:\Program Files\Java\jdk1.6.0_43  C:\Program Files\Java\jdk1.8.0_25 2 . ...

  7. MySQL 类型转换

    1.问题描述 在项目中遇到要将Int类型转为Char类型,然后利用转化后的Char类型进行模糊查询. 例:合同编号在数据库中为int类型 8066 用利用 806 模糊查询出合同编号为8066数据记录 ...

  8. CentOS7.4 关闭firewall防火墙,改用iptables

    1.关闭默认的firewall防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service ...

  9. luoguP3235 [HNOI2014]江南乐 数论分块 + 博弈论

    感觉其实很水? 题目就是一个Multi SG游戏,只需要预处理出所有的\(sg\)值即可\(O(Tn)\)计算 对于计算\(sg[n]\)而言,显然我们可以枚举划分了\(x\)堆来查看后继状态 那么, ...

  10. BZOJ.4316.小C的独立集(仙人掌 DP)

    题目链接 \(Description\) 求一棵仙人掌的最大独立集. \(Solution\) 如果是树,那么 \(f[i][0/1]\) 表示当前点不取/取的最大独立集大小,直接DP即可,即 \(f ...