Spring Validation
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相关推荐
- Spring Validation最佳实践及其实现原理,参数校验没那么简单!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:六点半起床 juejin.im/post/685654110 ...
- Spring Validation 最佳实践及其实现原理,参数校验没那么简单!
之前也写过一篇关于Spring Validation使用的文章,不过自我感觉还是浮于表面,本次打算彻底搞懂Spring Validation.本文会详细介绍Spring Validation各种场景下 ...
- Spring Validation 校验
一.概述 在 Web 应用中,客户端提交数据之前都会进行数据的校验,比如用户注册时填写的邮箱地址是否符合规范.用户名长度的限制等等,不过这并不意味着服务端的代码可以免去数据验证的工作,用户也可能使用 ...
- Spring Validation验证框架参数验证 @Validated 和 @Valid 的区别
参数验证 @Validated 和 @Valid 的区别 Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303 规范,是标准 JSR- ...
- js 强校验 弱校验_还在手写表单校验逻辑?试试spring validation吧
Java识堂,一个高原创,高收藏,有干货的微信公众号,欢迎关注 前言 数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的 ...
- @Validated和@Valid区别:Spring validation验证框架对入参实体进行嵌套验证必须在相应属性(字段)加上@Valid而不是@Validated...
Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR- ...
- 使用 Spring Validation 优雅地进行参数校验
引言 不知道大家平时的业务开发过程中 controller 层的参数校验都是怎么写的?是否也存在下面这样的直接判断? public String add(UserVO userVO) {if(user ...
- Spring Validation校验
本文来说下现在使用的比较多的Spring Validation校验框架. 文章目录 概述 校验注解 JSR-303包含的注解 Hibernate Validator扩展的注解 简单使用 引入依赖 re ...
- Spring Validation的校验顺序问题解决方案(建议读到最后,有大坑)
Spring Validation的校验顺序问题解决方案 问题场景 原理剖析 解决方法 创建五个接口 修改Controller控制层代码 修改实体类代码 整改结果 后续问题 问题原因 解决方案 问题场 ...
最新文章
- 创建图像 php,详解php创建图像具体步骤
- 推荐8个鲜为人知,但是很有意思的工具,简洁又好用!
- 弄清指针-如何深入了解指针
- 薛定谔的猫跳进了生物学界,化学家表示:没有我可能办不到
- UE3 中文教程主页
- background-position取值笔记
- Java Web的分页工具类
- 新手入门指南 | 教你如何写研报?
- 应用组件的名字与已安装应用有冲突
- MySQL 慢查询日志导入 Elasticsearch 可视化查询分析
- 如何设置微信公众号的测试号的菜单
- 如何进入/home/user/.wine
- GNN金融应用之Classifying and Understanding Financial Data Using Graph Neural Network学习笔记
- android联系人索引
- 记录-汶川地震 20080512
- 最新王了个王H5游戏源码+三消游戏/带后台版本
- java 继承关键字_java怎么继承,使用什么关键字?
- 落谷 P1464 function (空间换时间、记忆化搜索)
- 信息技术导论 第三章 移动互联网技术 笔记
- 深度学习笔记一:FCN讲解(转载)
热门文章
- Top 5 Agile Project Management Books
- 肖申克的救赎,阅后瞎想...(zz)写的不错
- Oracle之自动收集统计信息
- [MySQL Bug]DDL操作导致备库复制中断
- java8之Stream API(提取子流和组合流)
- Jsp语法、指令及动作元素
- 常见排序算法:冒泡排序
- ubuntu下配置eclipse
- Oracle shared_pool_reserved_size参数设置说明
- 2014-03-08_javascrit_controllerstatus