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

依赖Jar包

        <dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>

Controller方法

    /**
* 添加酒店
* @param hotel
* @param bindingResult
* @return
*/
@RequestMapping(value = "/add")
// @Valid注释表示需要验证
public String addHotel(@Valid Hotel hotel,
BindingResult bindingResult,
Model model) {
if (hotel.getName() == null) {
// 显示添加页面
model.addAttribute(HOTEL, new Hotel());
return "hotel/addHotel";
} else {
// 验证失败时回到本页面并显示错误信息
if (bindingResult.hasErrors())
return "hotel/addHotel";
hotelService.addHotel(hotel);
return "redirect:/hotel/list";
}
}

需要验证的bean配置

package com.qunar.bean;

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern; public class Hotel { private Integer id; @NotNull(message = "酒店代码不能为空")
@NotEmpty(message = "酒店代码不能为空")
@Pattern(regexp = "\\w+",
message = "酒店代码不能包含特殊字符")
@Length(max = 45, message = "酒店代码最长为45个字符")
private String code; @NotNull(message = "酒店名称不能为空")
@NotEmpty(message = "酒店名称不能为空")
@Pattern(regexp = "([\\u4e00-\\u9fa5]|\\w)+",
message = "酒店名称不能包含特殊字符")
@Length(max = 100, message = "酒店名称最长为100个字符")
private String name; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getCode() {
return code;
} public void setCode(String code) {
this.code = code == null ? null : code.trim();
} public String getName() {
return name;
} public void setName(String name) {
this.name = name == null ? null : name.trim();
}
}

页面

<%--
Created by IntelliJ IDEA.
User: zhenwei.liu
Date: 13-7-30
Time: 上午11:50
To change this template use File | Settings | File Templates.
--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8" %>
<html>
<head>
<title>添加酒店</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<sf:form action="/hotel/add" method="POST" modelAttribute="hotel">
<table>
<tr>
<td align="right">酒店代码</td>
<td><input type="text" name="code"/></td>
<td><sf:errors path="code" cssClass="error" /> </td>
</tr>
<tr>
<td align="right">酒店名称</td>
<td><input type="text" name="name"/></td>
<td><sf:errors path="name" cssClass="error" /> </td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="添加"/>
<input type="reset" value="重置"/></td>
</tr>
</table>
</sf:form>
</body>
</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. Java 集合Collection——初学者参考,高手慎入(未完待续)

    1.集合简介和例子 Collection,集合.和数学定义中的集合类似,把很多元素放在一个容器中,方便我们存放结果/查找等操作. Collection集合实际上是很多形式集合的一个抽象. 例如十九大就 ...

  2. Servlet的基本架构

    Servlet的基本架构: package test; import java.io.IOException; import javax.servlet.ServletException; impor ...

  3. poj2676(数独)

    也是一个简单剪枝的dfs.记录所有为0的位置,依次填写,当发现某个空格可选的填写数字已经没有时,说明该支路无效,剪掉. 不算是一个难题吧,但是还是花了不少时间,问题主要出在细节上,行列坐标反了.3乘3 ...

  4. python io 模块之 open() 方法(好久没写博客了)

    io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True),打开file ...

  5. 冒泡排序(初级版)之C++实现

    冒泡排序(初级版)之C++实现 一.源代码:BubbleSortLow.cpp /*冒泡排序思想: 从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面: 一轮比 ...

  6. PHP 笔记——面向对象编程知识点

    类是属性和方法的集合,是面向对象编程方式的核心和基础,通过类可以将零散的用于实现某项功能的代码进行有效管理. 类是由class关键字.类名和成员组成的,类名不区分大小写. 在类中定义常量使用关键字 c ...

  7. BZOJ 4945 UOJ #317 NOI2017 游戏 2-SAT 拓扑排序

    http://uoj.ac/problem/317 https://www.lydsy.com/JudgeOnline/problem.php?id=4945 我现在的程序uoj的额外数据通过不了,b ...

  8. BZOJ 2151 种树(循环链表)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2151 [题目大意] 在一个长度为n的数字环中挑选m个不相邻的数字使得其和最大 [题解] ...

  9. 用Win32编写发送消息至Notepad++的程序

    这次利用Win32编程写一个发送"Win32 Assembly,My First SendMessage Program !" 每个程序要发送消息至另一个程序的时候,通常使用Sen ...

  10. 2018-2019-2 20162318《网络对抗技术》Exp3 免杀原理与实践

    一.实验内容 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion),加壳工具),使用shellcode编程 2.通过组合应用各种技术实现恶意代码免杀(如果成 ...