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>