1. SpringMVC字符串向日期Date格式转换
springMVC默认不支持页面上的日期字符串(类似2020-10-14和2020/10/14之类的)到后台的Date的转换。
1.1 通过注解@DateTimeFormat()
实现日期格式转换。【 *** 推荐使用】
注解日期类型转换器(在需要进行日期格式转换的Date属性上添加注解):@DateTimeFormat("需要转换的格式")
出生日期<input type="date" name="birthday"/><br/>
public User{
private int id;
private String username;
private double password;
//注解将yyyy-MM-dd的形式转换为Date数据,具体什么格式要看传入参数格式,就是发送请求,查看请求参数的表单数据,看birthday数据的格式
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
}
查看请求头,发现传入的日期格式为
yyyy-MM-dd
格式,具体是怎么样的看请求信息就行。
1.2 编写自定义转换器实现Converter
,通过重写方法进行类型转换。
1.2.1 编写自定义转换器实现Converter
接口
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*自定义类型参数转换器: 将字符串日期格式转成Date类型的数据.
Converter<S,T> S: 代表的是源,将要转换的数据类型 T:目标类型,将会转成什么数据类型
*/
//日期格式转换器
public class DateFormatConverter implements Converter<String,Date>{
//转换方法
//String source 将会传递过来的日期的字符串
public Date convert(String source) {
//参数填写为你想要转换的数据格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(source);
return date;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
1.2.2 springmvc.xml中配置转换工厂,将转换器设置到converters集合中
<bean id="formattingConversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean id="dateFormatConverter" class="com.itheima.converter.DateTimeFormatConverter"></bean>
</set>
</property>
</bean>
1.2.3 将转换工厂对象挂载到处理器适配器上(springmvc.xml
)
<!-- 这个service的值要和你创建的转换器的bean的id一致 -->
<mvc:annotation-driven conversion-service="formattingConversionService"/>
2. SpringMVC日期格式化标签,date向指定格式转换(在jsp中使用)
2.1 需要jstl依赖
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2.2 在jsp页面导入标签
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
2.3 调用日期格式化标签fmt
标签(是导入你设置的前缀)
<fmt:formatDate value="${User.birthday}" pattern="yyyy-MM-dd-"/>
这样你传入后端的日期数据格式就是yyyy-MM-dd格式了
2.4 后台就在日期上加@DateTimeFormat(pattern = "yyyy-MM-dd")
注解就行
//这个pattern需要和你传入的数据格式一致
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthDay;
转载:https://blog.csdn.net/qq_40542534/article/details/109053413
查看评论