Spring mvc @initBinder 類型轉化器的使用

一.單日期格式java

由於是用註解完完成的後臺訪問,因此必須在大配置中配置包掃描器;web

1.applicactionContext.xmlspring

<?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:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        ">
     
   <!-- 配置包掃描器-->
       <context:component-scan base-package="cn.happy.controller"></context:component-scan>
</beans>

 

 2.配置類sql

package cn.happy.controller;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
     @Controller
    public class FirstController {
         /**
          * @param binder
          */
         
        @InitBinder
        public void initBinder(WebDataBinder binder){
            //PropertyEditor
            //類  implements  PropertyEditor
            binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); }
        @RequestMapping("/first.do")
        //類型轉化工做必定是在真正的handler方法執行前執行的。
        public String doFirst(Date birthday,int age) throws Exception{
            System.out.println(birthday+"===============");
            System.out.println(age+"===============");
            return "/WELCOME.jsp";
        }
        
        
    }

    

 

 3.前臺spring-mvc

    <form action="${pageContext.request.contextPath }/first.do" method="post">
                 出生日期:<input name="birthday"/><br/><br/>
                 年齡:<input name="age"/><br/><br/>
       <input type="submit" value="註冊"/>
    </form>

 

二:多日期格式mvc

1.由於並非一種格式,因此咱們能夠把能進轉換的格式提到一個類中app

package cn.happy.controller;

import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.regex.Pattern;

import org.springframework.beans.TypeMismatchException;
import org.springframework.beans.propertyeditors.PropertiesEditor;

public class MyDateEditor extends PropertiesEditor{
     @Override
    public void setAsText(String source) throws IllegalArgumentException {
    	 
      SimpleDateFormat sdf=getDate(source);
      //作一個操做
      try {
		setValue(sdf.parseObject(source));
	} catch (ParseException e) {
		e.printStackTrace();
	}
    	 
    }

	private SimpleDateFormat getDate(String source) {
		SimpleDateFormat sdf=null;
		if (Pattern.matches("^\\d{4}-\\d{2}-\\d{2}$", source)) {
			sdf=new SimpleDateFormat("yyyy-MM-dd");
		}else if (Pattern.matches("^\\d{4}/\\d{2}/\\d{2}$", source)) {
			sdf=new SimpleDateFormat("yyyy/MM/dd");
		}else if (Pattern.matches("^\\d{4}\\d{2}\\d{2}$", source)) {
			sdf=new SimpleDateFormat("yyyyMMdd");
		}else {
			throw new TypeMismatchException("", Date.class);
		}
		
		return sdf;
	}
     
     
     
     
}

二、仍是用@initBinder 註解處理類型jsp

package cn.happy.controller;

import java.beans.PropertyEditor;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.beans.propertyeditors.PropertiesEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
     @Controller
	public class FirstController {
    	 /**
    	  * 
    	  * @param binder
    	  */
    	 @InitBinder
    	public void initBinder(WebDataBinder binder){
    		binder.registerCustomEditor(Date.class,new MyDateEditor());
    		System.out.println("===============11111");
    		
    	}
    	 
		@RequestMapping("/first.do")
		//類型轉化工做必定是在真正的handler方法執行前執行的。
		public String doFirst(Date birthday,int age) throws Exception{
			System.out.println(birthday+"===============");
			System.out.println(age+"===============");
			return "/WELCOME.jsp";
		}
		
		
	}

	
相關文章
相關標籤/搜索