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. wampserver的安装和使用

    首先想说一下通常搭建WAMP平台的时候主要分为散装包搭建和集成包搭建过程. 散装包搭建就是把PHP,Apache,MySQL等下载下来,一个个的安装,其过程灰常的复杂,而且需要配置的系统变量和修改的文 ...

  2. Python爬虫个人记录(四)利用Python在豆瓣上写一篇日记

    涉及关键词:requests库 requests.post方法 cookies登陆 version 1.5(附录):使用post方法登陆豆瓣,成功! 缺点:无法获得登陆成功后的cookie,要使用js ...

  3. ThinPHP3.2中 addAll()批量插入数据

    thinkphp中model类的addAll()方法可以将数据同时添加到数据库中. 1 2 3 4 5 6 // 批量添加数据 (only MySQL) $user = M('user'); //ar ...

  4. Json格式String类型字符串转为Map工具类

    package agriculture_implement.util; import com.google.gson.Gson; import com.google.gson.JsonSyntaxEx ...

  5. Django配置参数可选总结

    一.可选字段参数 null blank core db_index editable primary_key radio_admin unique True or False db_colum hel ...

  6. Java输入输出入门 A+B

    描述 求两个整数之和. 输入 输入数据只包括两个整数A和B. 输出 两个整数的和. 样例输入 1 2 样例输出 3 import java.util.Scanner; public class Mai ...

  7. UVA 10177 Sqr/Rects/Cubes/Boxes?

    Problem J (2/3/4)-D Sqr/Rects/Cubes/Boxes? Input: standard input Output: standard output Time Limit: ...

  8. sql中如何统计一字段中字符串的个数

    declare @s varchar(100)set @s='156434A27kAsdABCiosd-01&**('--找出现的次数select len(@s)-len(replace(@s ...

  9. JavaScript RegExp对象的exec()方法

    JavaScript RegExp对象的exec()方法用来匹配字符串,它的行为与match()有些不同. 对于RegExpObject.exec(),w3school上面是这样介绍的: exec() ...

  10. Mina 断线重连

    Mina 断线重连 定义:这里讨论的Mina 断线重连是指使用mina作为客户端软件,连接其他提供Socket通讯服务的服务器端.Socket服务器可以是Mina提供的服务器,也可以是C++提供的服务 ...