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.liuDate: 13-7-30Time: 上午11:50To 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 Validation最佳实践及其实现原理,参数校验没那么简单!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:六点半起床 juejin.im/post/685654110 ...

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

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

  3. Spring Validation 校验

    一.概述 在 Web 应用中,客户端提交数据之前都会进行数据的校验,比如用户注册时填写的邮箱地址是否符合规范.用户名长度的限制等等,不过这并不意味着服务端的代码可以免去数据验证的工作,用户也可能使用 ...

  4. Spring Validation验证框架参数验证 @Validated 和 @Valid 的区别

    参数验证 @Validated 和 @Valid 的区别 Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303 规范,是标准 JSR- ...

  5. js 强校验 弱校验_还在手写表单校验逻辑?试试spring validation吧

    Java识堂,一个高原创,高收藏,有干货的微信公众号,欢迎关注 前言 数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的 ...

  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(UserVO userVO) {if(user ...

  8. Spring Validation校验

    本文来说下现在使用的比较多的Spring Validation校验框架. 文章目录 概述 校验注解 JSR-303包含的注解 Hibernate Validator扩展的注解 简单使用 引入依赖 re ...

  9. Spring Validation的校验顺序问题解决方案(建议读到最后,有大坑)

    Spring Validation的校验顺序问题解决方案 问题场景 原理剖析 解决方法 创建五个接口 修改Controller控制层代码 修改实体类代码 整改结果 后续问题 问题原因 解决方案 问题场 ...

最新文章

  1. 创建图像 php,详解php创建图像具体步骤
  2. 推荐8个鲜为人知,但是很有意思的工具,简洁又好用!
  3. 弄清指针-如何深入了解指针
  4. 薛定谔的猫跳进了生物学界,化学家表示:没有我可能办不到
  5. UE3 中文教程主页
  6. background-position取值笔记
  7. Java Web的分页工具类
  8. 新手入门指南 | 教你如何写研报?
  9. 应用组件的名字与已安装应用有冲突
  10. MySQL 慢查询日志导入 Elasticsearch 可视化查询分析
  11. 如何设置微信公众号的测试号的菜单
  12. 如何进入/home/user/.wine
  13. GNN金融应用之Classifying and Understanding Financial Data Using Graph Neural Network学习笔记
  14. android联系人索引
  15. 记录-汶川地震 20080512
  16. 最新王了个王H5游戏源码+三消游戏/带后台版本
  17. java 继承关键字_java怎么继承,使用什么关键字?
  18. 落谷 P1464 function (空间换时间、记忆化搜索)
  19. 信息技术导论 第三章 移动互联网技术 笔记
  20. 深度学习笔记一:FCN讲解(转载)

热门文章

  1. Top 5 Agile Project Management Books
  2. 肖申克的救赎,阅后瞎想...(zz)写的不错
  3. Oracle之自动收集统计信息
  4. [MySQL Bug]DDL操作导致备库复制中断
  5. java8之Stream API(提取子流和组合流)
  6. Jsp语法、指令及动作元素
  7. 常见排序算法:冒泡排序
  8. ubuntu下配置eclipse
  9. Oracle shared_pool_reserved_size参数设置说明
  10. 2014-03-08_javascrit_controllerstatus