标签:versions utf-8 doctype ase result errors conf eval login
1、需要的相关jar
这里采用的是hibernate-validator-5.2.4.Final 和validation-api-1.1.0.Final 两个jar包。Hibernate Validator 是 Bean Validation 的参考实现, Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。使用maven下载代码如下:
1 <dependency> 2 <groupId>javax.validation</groupId> 3 <artifactId>validation-api</artifactId> 4 <version>1.1.0.Final</version> 5 </dependency> 6 <dependency> 7 <groupId>org.hibernate</groupId> 8 <artifactId>hibernate-validator</artifactId> 9 <version>5.2.4.Final</version> 10 </dependency>
2、文件的配置
springservlet-config.xml文件配置如下:
1 <mvc:annotation-driven validator="validator" 2 conversion-service="conversion-service" /> 3 <bean id="validator" 4 class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> 5 <property name="providerClass" value="org.hibernate.validator.HibernateValidator" /> 6 <property name="validationMessageSource" ref="validatemessageSource" /> 7 </bean> 8 <bean id="conversion-service" 9 class="org.springframework.format.support.FormattingConversionServiceFactoryBean" /> 10 <bean id="validatemessageSource" 11 class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 12 <property name="basename" value="classpath:i18n" /> 13 <property name="fileEncodings" value="utf-8" /> 14 <property name="cacheSeconds" value="120" /> 15 </bean>
其中<property name="basename" value="classpath:i18n" />是验证错误后提示的消息所在的文件,需要在classpath路径下添加,也可以自己设置路径。
3、controller, user和i18n.properties代码
UserControlelr代码部分代码如下:
1 package org.springframework.samples.myjpetstores.controller; 2 3 import javax.validation.Valid; 4 5 import org.springframework.samples.myjpetstores.io.User; 6 import org.springframework.stereotype.Controller; 7 import org.springframework.ui.ModelMap; 8 import org.springframework.validation.BindingResult; 9 import org.springframework.web.bind.annotation.RequestMapping; 10 11 @Controller 12 public class UserController { 13 @RequestMapping("/login") 14 public String userLogin(@Valid User user, BindingResult result, ModelMap model) 15 { 16 if(result.hasErrors()) 17 { 18 return "loginForm"; 19 } 20 return "index"; 21 } 22 }
代码中需要注意的是,@Valid是必须的,只有加上@Valid,才会对传过来的参数 User类进行验证,后面必须紧跟着BindingResult result, 其中result是用来存放验证错误信息的,它们之间是不能有任务参数的,是成对出现的,有多少个@Valid,就必须有多少个BindingResult result。
User类代码
1 package org.springframework.samples.myjpetstores.io; 2 3 import org.hibernate.validator.constraints.NotEmpty; 4 5 public class User { 6 @NotEmpty(message="{username.not.empty}") 7 private String username; 8 @NotEmpty(message="{password.not.empty}") 9 private String password; 10 public String getUsername() { 11 return username; 12 } 13 public void setUsername(String username) { 14 this.username = username; 15 } 16 public String getPassword() { 17 return password; 18 } 19 public void setPassword(String password) { 20 this.password = password; 21 } 22 23 }
验证错误后的消息文件:i18n.properties
1 username.not.empty=username is required. 2 password.not.empty=password is required.
其中name.not.empty和@NotEmpty(message="{username.not.empty}")的{}里的名字必须一致。
4、视图界面
显示错误信息界面:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 5 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 6 7 <html> 8 <head> 9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 10 <title>Insert title here</title> 11 </head> 12 <body> 13 <form:form modelAttribute="user" method="post"> 14 <form:errors path="*"></form:errors> 15 <form:errors path="username"></form:errors> 16 <br /> 17 <br /> 18 </form:form> 19 </body> 20 </html>
其中需要注意的是<form:form modelAttribute="user" method="post">中的modelAttribute="user"和controller文件里的@Valid @ModelAttribute User user的@ModelAttribute一致,假如@ModelAttribute没有设置名字,就默认为user,假如写成@Valid @ModelAttribute("loginUser") User user,则 modelAttribute="loginUser" 否则不能进行数据绑定的。<form:errors path="*"></form:errors>的*表示所有的错误信息。<form:errors path="username"></form:errors>表示验证username的错误信息。
标签:versions utf-8 doctype ase result errors conf eval login
原文地址:http://www.cnblogs.com/Hxinguan/p/6106689.html