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配置轉換。