一般类型的参数,都会自动实现转换,比如下面的 private Long id; private String userName; private BigDecimal userSalary; 但是时间类型没有对应转换规则的话,服务器就会报错。
public class User { private Long id; private String userName; private BigDecimal userSalary; private Date createTime; // getter、setter } 1234567Converter
import org.springframework.core.convert.converter.Converter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * Created by susq on 2017-7-10. */ public class DateConvert implements Converter<String, Date> { @Override public Date convert(String stringDate) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); Date d = null; try { d = simpleDateFormat.parse(stringDate); } catch (ParseException e) { e.printStackTrace(); } return d; } } 123456789101112131415161718192021在spring配置文件中注册自定义的转换bean
<bean id="dateConvert" class="com.susq.springbegin.utils.DateConvert"/> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <ref bean="dateConvert"/> </set> </property> </bean> <mvc:annotation-driven conversion-service="conversionService"/> 123456789Controller中如下。
@RequestMapping(value = "/api/users/testParam") public void testparam(User vo) { System.out.println(vo.getId()); System.out.println(vo.getUserName()); System.out.println(vo.getCreateTime()); System.out.println(vo.getUserSalary()); } 1234567请求http://localhost:8080/api/users/testParam?userName=susq&Id=1&userPwd=123456&createTime=20170710&isDelete=1&userSalary=10000.123145 。输出
1 susq 123456 Mon Jul 10 00:00:00 CST 2017 1 10000.123145 123456类似于Converter, 修改实现和配置文件即可
public class DateConvert implements Formatter<Date> { @Override public Date parse(String s, Locale locale) throws ParseException { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); Date d = null; try { d = simpleDateFormat.parse(s); } catch (ParseException e) { e.printStackTrace(); } return d; } @Override public String print(Date date, Locale locale) { return null; } } 12345678910111213141516171819 <bean id="dateConvert" class="com.susq.springbegin.utils.DateConvert"/> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="formatters"> <set> <ref bean="dateConvert"/> </set> </property> </bean> <mvc:annotation-driven conversion-service="conversionService"/>