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. LoadRunner 一参多用

    LoadRunner参数化后的值在脚本中多处位置引用(LoadRunner 一参多用)   LoadRunner的参数化给了我们很多便利,但是当一个脚本中同一个值出现多处,并且值都是一致的.这个时候, ...

  2. Django第一步

    对于一个web框架,掌握了三部分的内容,就可以说是迈出了第一步. 1. 准备开发环境 2. 创建一个工程,并运行 3. 开发hello world应用 1. 准备环境 首先应该是安装python和dj ...

  3. Bootstrap进阶二:基本组件

    基本组件是Bootstrap的精华之一,其中都是开发者平时需要用到的交互组件.例如:网站导航.标签页.工具条.面包屑.分页栏.提示标签.产品展示.提示信息块和进度条等.这些组件都配有jQuery插件, ...

  4. 百道CTF刷题记录(一)

    简介 最近在刷CTF题,主攻Web,兼职Misc Shiyanbar 0x01 简单的登陆题 简单概括: 考点: %00截断正则 CBC字节翻转攻击 难度: 难 WP:https://blog.csd ...

  5. hdu 2275 Kiki & Little Kiki 1 水题

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2275 这个题比较简单,所以就没有测试样例提供给大家,基本把题目的样例过了就可以了 题目大意 给你一串操作, ...

  6. JFinal 3.3 学习 -- JFinalConfig (配置web项目)

    开篇  概述 基于JFinal的web项目需要创建一个继承自JFinalConfig类的子类,该类用于对整个web项目进行配置. JFinalConfig子类需要实现六个抽象方法,如下所示: publ ...

  7. java-Excel导出中的坑

    在Excel导出过程中,若遇到合并单元格样式只有第一行合并,而下面要合并的行没有边框显示. 一般问题出在将单元格样式设置与合并单元格放在同一个循环中导致. 以下为一个完整版的demo以供参考 定义边框 ...

  8. Swift2.0语言教程之类的属性

    Swift2.0语言教程之类的属性 类 虽然函数可以简化代码,但是当一个程序中出现成百上千的函数和变量时,代码还是会显得很混乱.为此,人们又引入了新的类型——类.它是人们构建代码所用的一种通用.灵活的 ...

  9. ceph journal操作

    查询ceph journal的地方 ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show | grep osd_journal & ...

  10. BZOJ.4919.[Lydsy1706月赛]大根堆(线段树合并/启发式合并)

    题目链接 考虑树退化为链的情况,就是求一个最长(严格)上升子序列. 对于树,不同子树间是互不影响的.仿照序列上的LIS,对每个点x维护一个状态集合,即合并其子节点后的集合,然后用val[x]替换掉第一 ...