SpringMVC日期类型接收空值异常问题
2024-10-18 10:32:44
最近遇到SpringMVC写个controller类,传一个空串的字符类型过来,正常情况是会自动转成date类型的,因为数据表对应类类型就是date的
解决方法是在controller类的后面加个注解:
@InitBinder
protected void initDateFormatBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
注意,上面的代码CustomDateEditor构造函数要传个true参数,表示允许传空字符串来进行日期类型转换
CustomDateEditor 里源码
public class CustomDateEditor extends PropertyEditorSupport {
private final DateFormat dateFormat;
private final boolean allowEmpty;
private final int exactDateLength;
public CustomDateEditor(DateFormat dateFormat, boolean allowEmpty) {
this.dateFormat = dateFormat;
this.allowEmpty = allowEmpty;
this.exactDateLength = -1;
}
....
}
Spring Bean类的装载是通过BeanWrapperImpl来实现,可以写个简单的例子,验证这个问题,DispatchInfoModel 类是我自己的测试类,里面有signDate这个date类型的参数
设置为true的情况,是可以正常运行的
public class mytest {
public static void main(String[] args) {
DispatchInfoModel tm = new DispatchInfoModel();
BeanWrapper bw = new BeanWrapperImpl(tm);
bw.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
bw.setPropertyValue("signDate", "");
System.out.println(tm.getSignDate());
}
}
设置为false的情况,会抛出异常:
public class mytest {
public static void main(String[] args) {
DispatchInfoModel tm = new DispatchInfoModel();
BeanWrapper bw = new BeanWrapperImpl(tm);
bw.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), false));
bw.setPropertyValue("signDate", "");
System.out.println(tm.getSignDate());
}
}
最新文章
- ReportingServies——SQLServer报表开发综合实例
- Visual Studio多版本进行切换的研究
- ThinkPHP 3.2.3的 R 方法
- 使用 Fluent API 配置/映射属性和类型
- 个人软件过程(psp)需求文档
- 谈谈 JavaScript 中的 this 指向问题
- spark RDD的元素顺序(ordering)测试
- Mysql 计算时间间隔函数
- 备注: ubt 16.04 安装 gtx 1060 --- 成功运行 tensorflow - gpu
- iOS多线程编程--NSOperation(转)
- 002-zookeeper 基本配置、安装启动 windows环境
- springboot情操陶冶-@SpringBootApplication注解解析
- 【ES】学习11-多桶排序
- 笔记关闭fn功能
- [Unity3D]MonoDeveloper快捷键(补全代码补全引用中文乱码tab转空格)
- [java] java 中Unsafe类学习
- Tomcat 500错误 问题集锦
- 1:3访问 servlet API 的两种方式(request,session等内置对象)
- 初见Python<;6>;:文件读写
- 002-es6字符串扩展
热门文章
- Windows自动执行应用程序或脚本(可以通过写bat文件定时关机等)
- Java8_map新增方法
- 解决无法修改日志时间的问题(Local time zone must be set--see zic manual page 2019 )
- HTTP 请求夹带(smuggling)攻击
- oracle创建新用户并授予权限
- Springcloud 配置 | 史上最全,一文全懂
- 手把手教你搭建织女星开发板RISC-V开发环境
- Spring 框架基础(01):核心组件总结,基础环境搭建
- three.js实现世界地图城市迁徙图
- Evaluation Warning : The document was created with Spire.PDF for .NET.