解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题

发布时间 - 2026-01-11 02:02:32    点击率:

页面报错:

后台错误:

Field error in object 'user' on field 'birthday': rejected value [2013-06-24]; codes [typeMismatch.user.birthday,typeMismatch.birthday,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.birthday,birthday]; arguments []; default message [birthday]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'birthday'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type java.util.Date for value '2013-06-24'; nested exception is java.lang.IllegalArgumentException]

解决方案1:在对应的实体类属性上加入 @DateTimeFormat(pattern = "yyyy-MM-dd")

解决方案2:不使用 <mvc:annotation-driven/>注解

使用 DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 注解驱动配置

在对应的实体类属性上加入 @DateTimeFormat(pattern = "yyyy-MM-dd")

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
      <property name="webBindingInitializer">
        <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
          <property name="conversionService">
            <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>
          </property>
        </bean>
      </property>
    </bean>

3、使用 @InitBinder注解,注册一个父类Controller(BaseController),其他Controller去继承它

Springmvc配置文件 

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
public class BaseController {
  @InitBinder
  public void initBinder(WebDataBinder binder) {
    /**
     * 第一种方式:使用WebDataBinder注册一个自定义的编辑器,编辑器是日期类型
     * 使用自定义的日期编辑器,日期格式:yyyy-MM-dd,第二个参数为是否为空  true代表可以为空
     */
    binder.registerCustomEditor(Date.class, new CustomDateEditor(
        new SimpleDateFormat("yyyy-MM-dd"), true));
  }
}

或者使用下面的方式

public class BaseController {
  @InitBinder
  public void initBinder(WebDataBinder binder) {
    /**
     * 方式二:使用WebDataBinder注册一个自定义的编辑器,编辑器是日期类型
     * 使用属性编辑器实现:重载setAsText,getAsText
     */
    binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {

      @Override
      public String getAsText() {
        return new SimpleDateFormat("yyyy-MM-dd")
            .format((Date) getValue());
      }

      @Override
      public void setAsText(String text) {
        try {
          setValue(new SimpleDateFormat("yyyy-MM-dd").parse(text));
        } catch (Exception e) {
          e.printStackTrace();
          setValue(null);
        }
      }

    });
  }
}

以上这篇解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# spring  # mvc  # 类型转换  # 如何使用SpringMVC的消息转换器设置日期格式  # SpringMVC中日期格式的转换  # SpringMVC对日期类型的转换示例  # SpringMVC用JsonSerialize日期转换方法  # SpringMVC自定义日期转换器方式  # 编辑器  # 自定义  # 给大家  # 为空  # 实体类  # 希望能  # 第二个  # 这篇  # 报错  # 小编  # 第一种  # 配置文件  # 大家多多  # Failed  # message  # context  # springframework  # org  # default  # DefaultMessageSourceResolvable 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 微信小程序 闭包写法详细介绍  如何构建满足综合性能需求的优质建站方案?  Laravel怎么使用artisan命令缓存配置和视图  如何快速查询网址的建站时间与历史轨迹?  公司门户网站制作流程,华为官网怎么做?  再谈Python中的字符串与字符编码(推荐)  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  网站建设保证美观性,需要考虑的几点问题!  青岛网站建设如何选择本地服务器?  如何在万网ECS上快速搭建专属网站?  如何实现javascript表单验证_正则表达式有哪些实用技巧  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  Laravel如何实现事件和监听器?(Event & Listener实战)  如何快速打造个性化非模板自助建站?  北京网站制作的公司有哪些,北京白云观官方网站?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  香港服务器如何优化才能显著提升网站加载速度?  *服务器网站为何频现安全漏洞?  如何在万网开始建站?分步指南解析  如何批量查询域名的建站时间记录?  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  Laravel如何为API生成Swagger或OpenAPI文档  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  php 三元运算符实例详细介绍  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  JavaScript中的标签模板是什么_它如何扩展字符串功能  昵图网官方站入口 昵图网素材图库官网入口  如何有效防御Web建站篡改攻击?  Laravel怎么实现验证码(Captcha)功能  如何在腾讯云免费申请建站?  如何解决hover在ie6中的兼容性问题  如何登录建站主机?访问步骤全解析  浅述节点的创建及常见功能的实现  如何快速搭建支持数据库操作的智能建站平台?  Python数据仓库与ETL构建实战_Airflow调度流程详解  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  潮流网站制作头像软件下载,适合母子的网名有哪些?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  如何在阿里云香港服务器快速搭建网站?  EditPlus中的正则表达式实战(6)  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  Laravel怎么使用Intervention Image库处理图片上传和缩放