关于springmvc怎么自动把前台string类型日期字段转换成date类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于springmvc怎么自动把前台string类型日期字段转换成date类型相关的知识,希望对你有一定的参考价值。

简单点处理,就是接收string,然后string转成date,就不用spring自动转换了
其实道理一样,spring帮你做这个转换跟你自己做转换区别不大
参考技术A 方式一:在实体类 Date 字段使用Spring 注解 @DatetimeFormat 将字符串转换为时间。
方式二:定义一个BaseController 使用SpringMVC 中 @InitBinder 自定义数据绑定一个方法
统一处理字符串转换日期,其他的Controller 都继承于BaseController 。
方式三:实现Spring 提供的converter 转换器。
参考技术B 我来
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startTime;

这个是你javaBean的格式 这样就行了

springmvc表单提交日期格式,怎么搞

前台<input name="birthday"/>,
后台Controller中的一个方法public String login(User user)....
前台birthday对应user.birthday,当然user的这个属性是Date类型,前台传过来的是字符类型,
一般情况下spring就会自动进行前后台的自动匹配,但是数据类型不一致会报错,说前台传过来的数据不合法.
只需在Controller中定义一个方法:
@InitBinder
public void initBinder(ServletRequestDataBinder binder)
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));

作用即是将前台传入的String类型birthday经SimpleDateFormat转换成Date类型birthday从而和user.birthday匹配.
参考技术A 这个问题比较常见。form表单提交给后台的数据类型是string,如果实体类属性上不加数据格式转换的话会报400的错(数据类型不匹配)。
解决方法:
在实体类属性上添加:

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
private Date produceTime; // 生产时间

@JsonFormat是为了展示时添加的。
form提交采用的是My97DatePicker时间控件
参考技术B 我用xml+注解组合配置刚搞定了日期转换的问题,给楼主分享一下:
xml配置:
<mvc:annotation-driven conversion-service="conversionService"/>
注解配置(从spring.io上抄的)
@Configuration
public class AppConfig

public AppConfig()



@Bean
public FormattingConversionService conversionService()

// Use the DefaultFormattingConversionService but do not register defaults
DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService(false);

// Ensure @NumberFormat is still supported
conversionService.addFormatterForFieldAnnotation(new NumberFormatAnnotationFormatterFactory());

// Register date conversion with a specific global format
DateFormatterRegistrar registrar = new DateFormatterRegistrar();
registrar.setFormatter(new DateFormatter("yyyy-MM-dd"));
registrar.registerFormatters(conversionService);

return conversionService;


springmfc代码:
@RequestMapping(params="method=dt")
public void dt(Date d,HttpServletResponse req)
System.out.println(d);

以上是关于关于springmvc怎么自动把前台string类型日期字段转换成date类型的主要内容,如果未能解决你的问题,请参考以下文章

springmvc表单提交日期格式,怎么搞

springMVC接收前台传的日期

springmvc mybatis怎么把mysql的时间格式化为yyyy-mm-dd展示到前台

[技术分享] 20171211_后端开发_使用@DateTimeFormat注解解决前台string类型与后台date类型的转换,使用@JsonFormat注解解决后台date类型与前台string类

关于SpringMvc的ajax请求的问题

springMVC怎么接受前台传过来的多种类型参数?(集合实体单个参数)