标签:


<?xml version="1.0" encoding="UTF-8" ?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"><!-- 扫描web包,应用Spring的注解 --><context:component-scan base-package="com.ll.web"/><!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面,默认优先级最低 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"p:viewClass="org.springframework.web.servlet.view.JstlView"p:prefix="/jsp/"p:suffix=".jsp" /><!-- 设置数据校验、数据转换、数据格式化 --><mvc:annotation-driven validator="validator" conversion-service="conversionService"/><!-- 数据转换/数据格式化工厂bean --><bean id="conversionService"class="org.springframework.format.support.FormattingConversionServiceFactoryBean" /><!-- 设置校验工厂bean-采用hibernate实现的校验jar进行校验-并设置国际化资源显示错误信息 --><bean id="validator"class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"><property name="providerClass" value="org.hibernate.validator.HibernateValidator" /><!--不设置则默认为classpath下的 ValidationMessages.properties --><property name="validationMessageSource" ref="validatemessageSource" /></bean><!-- 设置国际化资源显示错误信息 --><bean id="validatemessageSource"class="org.springframework.context.support.ReloadableResourceBundleMessageSource"><property name="basename"><list><value>classpath:valideMessages</value></list></property><property name="fileEncodings" value="utf-8" /><property name="cacheSeconds" value="120" /></bean></beans>

package com.ll.model;import java.util.Date;import javax.validation.constraints.DecimalMax;import javax.validation.constraints.DecimalMin;import javax.validation.constraints.Past;import javax.validation.constraints.Pattern;import org.hibernate.validator.constraints.Length;import org.springframework.format.annotation.DateTimeFormat;import org.springframework.format.annotation.NumberFormat;public class Person {@Pattern(regexp="W{4,30}",message="{Pattern.person.username}")private String username;@Pattern(regexp="S{6,30}",message="{Pattern.person.passwd}")private String passwd;@Length(min=2,max=100,message="{Pattern.person.passwd}")private String realName;@Past(message="{Past.person.birthday}")@DateTimeFormat(pattern="yyyy-MM-dd")private Date birthday;@DecimalMin(value="1000.00",message="{DecimalMin.person.salary}")@DecimalMax(value="2500.00",message="{DecimalMax.person.salary}")@NumberFormat(pattern="#,###.##")private long salary;public Person() {super();}public Person(String username, String passwd, String realName) {super();this.username = username;this.passwd = passwd;this.realName = realName;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPasswd() {return passwd;}public void setPasswd(String passwd) {this.passwd = passwd;}public String getRealName() {return realName;}public void setRealName(String realName) {this.realName = realName;}public Date getBirthday() {// DateFormat df = new SimpleDateFormat("yyyy-MM-dd");// return df.format(birthday);return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public long getSalary() {return salary;}public void setSalary(long salary) {this.salary = salary;}@Overridepublic String toString() {return "Person [username=" + username + ", passwd=" + passwd + "]";}}






package com.ll.web;import java.security.NoSuchAlgorithmException;import javax.validation.Valid;import org.springframework.stereotype.Controller;import org.springframework.validation.BindingResult;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import com.ll.model.Person;/*** @author Administrator**/@Controller@RequestMapping(value = "/test")public class TestController {@ModelAttribute("person")public Person initModelAttr() {Person person = new Person();return person;}/*** 返回主页* @return*/@RequestMapping(value = "/index.action")public String index() {return "regedit";}/*** 1. 在入参对象前添加@Valid注解,同时在其后声明一个BindingResult的入参(必须紧随其后),* 入参可以包含多个BindingResult参数;* 2. 入参对象前添加@Valid注解:请求数据-->入参数据 ===>执行校验;* 3. 这里@Valid在Person对象前声明,只会校验Person p入参,不会校验其他入参;* 4. 概括起来:@Valid与BindingResult必须成对出现,且他们之间不允许声明其他入参;* @param bindingResult :可判断是否存在错误*/@RequestMapping(value = "/FormattingTest")public String conversionTest(@Valid @ModelAttribute("person") Person p,BindingResult bindingResult) throws NoSuchAlgorithmException {// 输出信息System.out.println(p.getUsername() + " " + p.getPasswd() + " "+ p.getRealName() + " " + " " + p.getBirthday() + " "+ p.getSalary());// 判断校验结果if(bindingResult.hasErrors()){System.out.println("数据校验有误");return "regedit";}else {System.out.println("数据校验都正确");return "success";}}}


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %><html><head><title>数据校验</title><style>.errorClass{color:red}</style></head><body><form:form modelAttribute="person" action=‘FormattingTest.action‘ ><form:errors path="*" cssClass="errorClass" element="div"/><table><tr><td>用户名:</td><td><form:errors path="username" cssClass="errorClass" element="div"/><form:input path="username" /></td></tr><tr><td>密码:</td><td><form:errors path="passwd" cssClass="errorClass" element="div"/><form:password path="passwd" /></td></tr><tr><td>真实名:</td><td><form:errors path="realName" cssClass="errorClass" element="div"/><form:input path="realName" /></td></tr><tr><td>生日:</td><td><form:errors path="birthday" cssClass="errorClass" element="div"/><form:input path="birthday" /></td></tr><tr><td>工资:</td><td><form:errors path="salary" cssClass="errorClass" element="div"/><form:input path="salary" /></td></tr><tr><td colspan="2"><input type="submit" name="提交"/></td></tr></table></form:form></body></html>



【Spring学习笔记-MVC-10】Spring MVC之数据校验
标签:
原文地址:http://www.cnblogs.com/ssslinppp/p/4601894.html