Spring MVC處理參數Convert


Springmvc.xml

配置convert,xml中配置多個相同的泛型時,xml里配置的convert會從上到下挨個執行。

    <!-- 配置注解驅動,並配置convert -->
    <mvc:annotation-driven conversion-service="myConversionService"/>

    <!-- 配置多個convert -->
    <bean id="myConversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">   
         <property name="converters">
             <list>
                 <bean class="com.gmtx.system.convertre.DateConverter"/>
                 <bean class="com.gmtx.system.convertre.TimestampConverter"/>
                 <bean class="com.gmtx.system.convertre.NumberConverter"/>
                 <bean class="com.gmtx.system.convertre.BooleanConverter"/>
                 <bean class="com.gmtx.system.convertre.IntegerConverter"/>
                 <bean class="com.gmtx.system.convertre.FloatConverter"/>
                 <bean class="com.gmtx.system.convertre.DoubleConverter"/>
                 <bean class="com.gmtx.system.convertre.LongConverter"/>
                 <bean class="com.gmtx.system.convertre.ShortConverter"/>
                 <bean class="com.gmtx.system.convertre.CharConverter"/>
                 <bean class="com.gmtx.system.convertre.StringConvert"/>
                 <!-- DateTimeConverter和DateConverter都是處理成Date類型,前者是處理成年月日,后者是處理成yyyy-MM-dd HH:mm:ss,先用前面一個再用后面一個,最終以后面的為准 -->
                 <bean class="com.gmtx.system.convertre.DateTimeConverter"/>
             </list>
         </property>
     </bean>    

 

創建Convert

新建一個時間字符串轉時間戳的convert。

implements Converter<String, Timestamp>這里的泛型一定要寫,這里決定了你需要 使用哪個convert。xml中配置多個相同的泛型時,xml里配置的convert會從上到下挨個執行。

package com.gmtx.system.convertre;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.core.convert.converter.Converter;

/**
 * 時間轉時間戳
 */
public class TimestampConverter implements Converter<String, Timestamp> {

    public Timestamp convert(String timeStr) {
        Timestamp t = null;
        if (timeStr!=null && timeStr != "") {
             SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
             Date date = null;
            try {
                date = format.parse(timeStr);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            //日期轉時間戳(毫秒)
            t = new Timestamp(date.getTime());
        }
        return t;
    }
}

使用Convert

在Controller中使用,dt的類型決定使用哪個Convert,前面的@RequestParam在參數名和變量名一樣的時候可以不寫。

@Controller
@RequestMapping("/common")
public class CommonController {
    
    /**
     * @param dt dt的class類型決定使用哪個Convert
     * @return list的json集合
     */
    @RequestMapping(value="/testConvert",method={RequestMethod.GET,RequestMethod.POST})
    @ResponseBody
    public static Object testConvert(@RequestParam(value = "date") Timestamp dt){
        List<Entity> list = new ArrayList<Entity>();
        Entity e = new Entity();
        e.setId("id1");
        e.setBirth(dt.getTime()+"");
        list.add(e);
        return list;
    }
}

測試

 spring mvc會自動實現前端傳一個對象的json會自動封裝到實體對象里。實體的字段也會用到上面的convert配置轉換。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM