
正文
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配置转换。








