一般类型的参数,都会自动实现转换,比如下面的 private Long id; private String userName; private BigDecimal userSalary; 但是时间类型没有对应转换规则的话,服务器就会报错。
public class User {
private Long id;
private String userName;
private BigDecimal userSalary;
private Date createTime;
}
实现spring提供的Converter接口,自定义类型转换的处理。
Converter
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;
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
在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" />
Controller中如下。
@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());
}
请求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
类似于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 ;
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
<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" />