先看看几个关键词 @Valid @Pattern @NotNull @NotBlank @Size BindingResult 这些就是Spring MVC的数据校验的几个注解。 那怎么用呢?往下看

1.先在pom.xml文件中加入依赖

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.0.Final</version>
</dependency>

2.写controller层

@Controller
@RequestMapping("/user")
public class UserController extends BaseController{
@RequestMapping("/index")
public String index() {
return "index";
} @RequestMapping("/toAddUser")
public String toAddUserPage() {
return "addUser";
} /**
* form表单添加用户,并用注解形式校验
* @Valid 表示 userModel要进行校验
* BindingResult 表示绑定校验的错误信息返回
* @param userModel
* @param bindingResult
* @return
*/
@RequestMapping("/add")
public String addUser(@Valid @ModelAttribute("userModel") UserModel userModel, BindingResult bindingResult, Model model) { if (bindingResult.hasErrors()) {
FieldError fieldError = bindingResult.getFieldError();
String validMess = fieldError.getDefaultMessage();
model.addAttribute("errors", validMess);
return "error";
}
System.out.println("用户姓名:" + userModel.getName());
System.out.println("用户邮箱:" + userModel.getEmail());
//用重定向防止页面刷新重复提交
return "redirect: /user/index";
}
}

3、看看UserModel.java

public class UserModel {
private Integer id; // @NotNull(message = "姓名不能为空")
@NotBlank(message = "{username.not.empty}")
// @Size(min = 3, max = 10, message = "please input right length")
private String name;
private Integer age;
private String gender;
@Pattern(regexp = "^[A-Za-z\\d]+([-_.][A-Za-z\\d]+)*@([A-Za-z\\d]+[-.])+[A-Za-z\\d]{2,4}$",
message = "{username.not.empty}")
private String email;
@NotNull
private String phone; setters... getters....
}

4、在spring 的配置文件中添加配置信息 applicationContext.xml

<!--JSR-303 @Valid 国际化支持配置 -->
<mvc:annotation-driven validator="validator" conversion-service="conversion-service" />
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
<!-- 如果不加默认到 使用classpath下的 ValidationMessages.properties -->
<property name="validationMessageSource" ref="messageSource"/>
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:valid-message-zh" />
<property name="fileEncodings" value="utf-8"/>
<property name="cacheSeconds" value="120"/>
</bean>
<bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />

5、别忘记配置文件中的 valid-message-zh.properties哦

username.not.empty=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a

参考:

[1] 《Spring实战》,人民邮电出版社, Craig Walls

Spring MVC 数据校验@Valid的更多相关文章

  1. spring mvc 数据校验(bean实体注解实现)

    spring mvc 数据校验 1.添加个jar (jar与一版本会冲突) <dependency> <groupId>com.fasterxml</groupId> ...

  2. JSR教程2——Spring MVC数据校验与国际化

    SpringMVC数据校验采用JSR-303校验. • Spring4.0拥有自己独立的数据校验框架,同时支持JSR303标准的校验框架. • Spring在进行数据绑定时,可同时调用校验框架完成数据 ...

  3. 【代码总结】Spring MVC数据校验

    1.实验介绍 --------------------------------------------------------------------------------------------- ...

  4. Spring MVC数据校验

    在web应用程序中,为了防止客户端传来的数据引发程序异常,常常需要对 数据进行验证.输入验证分为客户端验证与服务器端验证.客户端验证主要通过JavaScript脚本进行,而服务器端验证则主要通过Jav ...

  5. spring mvc 数据校验

    1.需要导入的jar包: slf4j-api-1.7.21.jar validation-api-1.0.0.GA.jar hibernate-validator-4.0.1.GA.jar 2.访问页 ...

  6. Hibernate Validation,Spring mvc 数据验证框架注解

    1.@NotNull:不能为 Null,但是可以为Empty:用在基本数据类型上. @NotNull(message="{state.notnull.valid}", groups ...

  7. Java Web 学习(6) —— Spring MVC 之校验器

    Spring MVC 之校验器 数据验证 一个典型的 Spring MVC 应用会同时应用到 formatters/converters 和 validators. 在调用 controller 期间 ...

  8. 从深处去掌握数据校验@Valid的作用(级联校验)

    每篇一句 NBA里有两大笑话:一是科比没天赋,二是詹姆斯没技术 相关阅读 [小家Java]深入了解数据校验:Java Bean Validation 2.0(JSR303.JSR349.JSR380) ...

  9. Spring MVC 数据验证——validate编码方式

    1.导入jar包 validation-api-1.0.0.GA.jar这是比較关键的一个jar包,主要用于解析注解@Valid. hibernate-validator-4.3.2.Final.ja ...

随机推荐

  1. Java学习笔记19(String类)

    String代表字符串,在Java中,所有的字符串字面值都作为此类的实例实现 字符串的特点以及简单的原理分析: package demo; /* * String类的特点: * 所有的"&q ...

  2. mysql数据库-------基础

    一 数据库是什么 把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件,即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理,为了远程访问并处理这台共享机器上的文件, ...

  3. 使用Python实现的杨辉三角

    def triangel(): print ' '*(20*3)+str(1) #定义起始两行 print ' '*(19*3)+str(1)+' '*5+str(1) for i in range( ...

  4. ATM机运行代码

    实现代码: import java.util.Scanner; public class Atm { public static void main(String[] args) { // TODO ...

  5. 使用Linq确定序列是否包含任何元素

    假设我们有一个集合,想要判断这个集合中是否包含任何元素可以使用Linq中的Any() List<string> list = new List<string> { " ...

  6. Cortex-M3启动深度解析

    Cortex-Mx启动,备忘,以免将来忘记.中断向量表不用说,从重置中断开始吧 LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 这里一共就执行了两个函 ...

  7. Python全栈考试(一)

    1.执行 Python 脚本的两种方式 1) 使用命令行执行Python脚本: python C:\tesst.py 2) 使用各种IDE软件.pycharm wing 2.简述位.字节的关系 位 ( ...

  8. typeof关键字的作用

    http://blog.chinaunix.net/uid-28458801-id-4200573.html 一.typeof详解: 前言:    typeof关键字是C语言中的一个新扩展,这个特性在 ...

  9. Spring+SpringMVC+MyBatis+easyUI整合优化篇

    优化篇 Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)System.out.print与Log Spring+SpringMVC+MyBatis+easyUI整合优化篇 ...

  10. javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

    前言 今天一个朋友让我帮他做一下tomcat的https配置,中间遇到了标题中这个错误,因此记录了一下过程,服务器.域名.证书.tomcat都已经准备好,就是需要配置一下即可,用的是阿里云的证书服务, ...