SpringMVC存在默认类型转换,前端发送到数据是以字符串形式,默认转换为类中自定义的类型
但有时我们需要前端展示为指定样式的类型,如 默认前端日期字符串格式为:2019/11/11 而我们需要前端日期输入的格式位2019-11-11
这时候就需要做一个自定义类型转换器了
关键代码:
spring.xml
<!--配置自定义类型转换器-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="cn.itcast.utils.StringToDateConverter"></bean> <!--bean路径-->
</set>
</property>
</bean>
<!--配置springmvc框架注解的支持-->
<mvc:annotation-driven conversion-service="conversionService"/>
类StringToDateConverter (真正转换的算法)
package cn.itcast.utils;
/**
* 把字符串转换位日期
*/
import org.springframework.core.convert.converter.Converter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDateConverter implements Converter<String ,Date> {
/**
* String source 传入字符串
* @return
*/
@Override
public Date convert(String source) {
if(source==null){
throw new RuntimeException("请您传入数据");
}
DateFormat df=new SimpleDateFormat("yyyy-mm-dd");
try {
//把字符串转为日期
return df.parse(source);
} catch (ParseException e) {
throw new RuntimeException("数据类型转换出现错误");
}
}
}
实体类User
package cn.itcast.domain;
import org.omg.PortableInterceptor.ServerRequestInfo;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
private String username;
private Integer age;
private Date date;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", age=" + age +
", date=" + date +
'}';
}
}
页面param.jsp 在 < body>里添加
<%--自定义类型转化器--%>
<form action="param/saveUser" method="post">
用户姓名:<input type="text" name="username"><br>
用户年龄:<input type="text" name="age"><br>
用户生日:<input type="text" name="date"><br>
<input type="submit" value="提交"><br>
</form>