SpringMVC日期类型接收空值异常问题解决方法
最近遇到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()); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Spring MVC Controller返回值及异常的统一处理方法
旧的设计方案 开发api的时候,需要先定义好接口的数据响应结果.如下是一个很简单直接的Controller实现方法及响应结果定义. @RestController @RequestMapping("/users") public class UserController { @Inject private UserService userService; @GetRequest("/{userId:\\d+}") public ResponseBean signin
-
Springmvc的运行流程图文详解
一.常见类及其作用 HandlerExecutionChain : Handler执行链对象, 包含了请求处理器对象 以及所有的拦截器对象. HandlerMapping : 定义了所有的请求与 所有的请求处理器之间的映射. HandlerAdaptor: 请求处理器适配器对象, 负责完成请求处理器对象的调用 . 方法的执行等- 二. 运行流程: 浏览器端发送请求到服务器端: 1.1 当前的请求在DispatcherServlet中不存在对应的映射 ① 是否配置mvc:default-servl
-
浅谈SpringMVC的执行流程
#简易版 1.客户发送请求经过 DisPatcherServlet 核心过滤器 2.DisPatcherServlet 核心控制器在去找一个或多个HandlerMappering 找到需要处理的Controller 3.DisPatcherServlet 通过HandlerAdapter将请求转发给 Controller 4.Controller 调用业务处理后返回结果给 ModelAndView 5.DisPatcherServlet 找到一个或者多个 ViewResolver 视图解析器 找
-
SpringMVC的执行流程及组件详解
这篇文章主要介绍了SpringMVC的执行流程及组件详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.核心模块 数据库访问技术与集成:JDBC.XML等 Web与远程调用技术:SpringMVC.WebServlet.WebSocket等 面向切面编程:AOP 基础设施:Tomcat Spring核心容器:Beans.Core.Context.Expression.ContestSupport 测试:Test 二.执行流程 1.用户通过页
-
springmvc流程图以及配置解析
springmvc:是完成数据的封装和跳转的功能 流程图如下: springmvc的配置流程 1.导入jar包 2.配置servlet文件 init-param的作用是在启动servlet启动时规定其地地址及名称去搜寻其springmvc配置文件 3.配置springmvc配置文件 进行handlermapping的配置,不进行配置时BeanNameUrlHandlerMapping, handlermapping的三种方式 1.默认方式BeanNameUrlHandlerMapping,根据b
-
SpringMVC的执行过程浅析
前言 通过深入分析Spring源码,我们知道Spring框架包括大致六大模块, 如Web模块,数据库访问技术模块,面向切面模块,基础设施模块,核心容器模块和模块, 其中,在Spring框架的Web模块中,又包含很多前端技术,如SpringMVC,Spring WebSocket,Spring WebPortlet等,在本篇文章中,我们主要分析SpringMVC模块, 在分析SpringMVC技术时,本篇文章将通过解读SpringMVC源码,并通过编译器断点调试追踪,研究Spring核心类的UML
-
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
整合前的准备步骤 1.搭建好基础框架,本文用的是SSM(Spring+SpringMVC+Mybatis),这里的过程就不在本文中讲了,之前我做个一个demo(ssm整合+用户模块),可以参考这个搭建好. 2.下载bootstrap fileinput组件源码: https://github.com/kartik-v/bootstrap-fileinput/ 搭建后的效果图 图1. 图2. 图3. 图4. 图5. 在需要编写的jsp页面引入组件 本工程的路径界面如下: 在jsp引入组件需要的js
-
springboot+springmvc实现登录拦截
这篇文章主要介绍了springboot+springmvc实现登录拦截,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 LoginInterceptor 实现 HandlerInterceptor 接口,自定义拦截器处理方法 LoginConfiguration 实现 WebMvcConfigurer 接口,注册拦截器 ResourceBundle 加载 properties文件数据,配置不进行拦截的路径 LoginInterceptor pac
-
SpringMVC实现多文件上传
本文实例为大家分享了Spring MVC多文件上传的具体代码,供大家参考,具体内容如下 1)创建工程并导入JAR包 2)创建多文件选择页面 在 WebContent 目录下创建 JSP 页面 multiFiles.jsp,在该页面中使用表单上传多个文件,具体代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%&g
-
SpringMVC日期类型接收空值异常问题解决方法
最近遇到SpringMVC写个controller类,传一个空串的字符类型过来,正常情况是会自动转成date类型的,因为数据表对应类类型就是date的 解决方法是在controller类的后面加个注解: @InitBinder protected void initDateFormatBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); binde
-
SpringMVC中controller接收json数据的方法
本文实例为大家分享了SpringMVC中controller接收json数据的方法,供大家参考,具体内容如下 1.jsp页面发送ajax的post请求: function postJson(){ var json = {"username" : "imp", "password" : "123456"}; $.ajax({ type : "post", url : "<%=basePath
-
python上下文管理器异常问题解决方法
对于异常的使用上,当我们在捕捉到错误时,会有一个抛出的选项让我们做决定.不过加入了上下文管理器后,就不用对异常进行选择了,因为其作用是不必抛出.下面我们就python上下文管理器处理异常进行说明,分析其中的三个参数,最后带来一个处理异常的实例供大家进行学习. 1.异常说明 异常可以在__exit__ 进行捕获并由你自己决定如何处理,是抛出还是不抛出.在__exit__ 里返回 True(没有return 就默认为 return False),就相当于告诉 Python解释器,这个异常我们已经捕获
-
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
由于工作的需求,需要用python做一个类似网络爬虫的采集器.虽然Python的urllib模块提供更加方便简洁操作,但是涉及到一些底层的需求,如手动设定User-Agent,Referer等,所以选择了直接用socket进行设计.当然,这样的话,需要对HTTP协议比较熟悉,HTTP协议这里就不做讲解了.整个python的代码如下: #!/usr/bin env python import socket host="www.baidu.com" se=socket.socket(soc
-
springmvc接收参数为日期类型详解
这篇文章主要介绍了springmvc接收参数为日期类型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用单个Date类型接收日期类型时,会出现报错,加上initBinder的方法 意思是将所有传入的参数都通过此方法,如果过是日期通过日期格式化器进行格式化 如果是接收类型为对象内的属性为Date类型时 直接在属性双加上注解,就可以进行转化日期格式 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们.
-
springmvc接收参数为日期类型
用单个Date类型接收日期类型时,会出现报错,加上initBinder的方法 意思是将所有传入的参数都通过此方法,如果过是日期通过日期格式化器进行格式化 如果是接收类型为对象内的属性为Date类型时 直接在属性双加上注解,就可以进行转化日期格式
-
SpringMVC对日期类型的转换示例
在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置. 1.如果查询类使我们自己写,那么在属性前面加上@DateTimeFormat(pattern = "yyyy-MM-dd") ,即可将String转换为Date类型,如下 @DateTimeFormat(pattern = "yyyy-MM-dd") private Date createTime; 2.如果我们只负责we
-
springMVC前台传数组类型,后台用list类型接收实例代码
springMVC后台处理数组对象. list类型的参数,接收前台的数组值,实验了一下,结果还真可以. 不用绑定到对象里面. 当然我这个是前台传递了个包含的是string的数组到后台,然后,后台用list来接收. 具体如下: 前台代码: //发送请求到后台,带数组形式的数据. function testList() { var data = getTreeViewCheckedData(); $.ajax({ url: APP_NAME + "xxxx/testList", data:
-
springmvc级联属性处理无法转换异常问题解决
这篇文章主要介绍了springmvc级联属性处理无法转换异常问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 两点要注意, 1. 在mapper的xml文件里,对应的需要填写级联字段,如 <insert id="addAdmin" useGeneratedKeys="true" keyProperty="id" parameterType="cn.taotao.bean.A
-
java实现字符串和日期类型相互转换的方法
本文实例讲述了java实现字符串和日期类型相互转换的方法.分享给大家供大家参考,具体如下: Date inDate = new Date(); //获取当前日期 //建立一个一定格式的 SimpleDateFormat SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String date = f.format(inDate); //将Date转化为字符串 System.out.println(date
随机推荐
- jQuery帮助之筛选查找 children([expr])
- 基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
- JavaScript 构造函数 面相对象学习必备知识
- Linux配置VSFTP服务器的方法
- Windows 下安装配置 Eclipse详细教程
- 使用工具 plsqldev将Excel导入Oracle数据库
- JavaScript原型链示例分享
- python中Flask框架简单入门实例
- MySQL提示The InnoDB feature is disabled需要开启InnoDB的解决方法
- PHP中使用file_get_contents抓取网页中文乱码问题解决方法
- Ajax的使用四大步骤
- C#实现的AES加密解密完整实例
- Android 高仿微信支付数字键盘功能
- 各版本IIS下ASP.net请求处理过程区别第1/3页
- js最简单的拖拽效果实现代码
- PHP基于GD库的图像处理方法小结
- Spring5源码解析之Spring中的异步和计划任务
- js 返回时间戳所对应的具体时间
- python2.7到3.x迁移指南
- mybatis自动填充时间字段示例代码