首页 > 其他分享 >SpringMVC系列之(六)自定义类型转换器

SpringMVC系列之(六)自定义类型转换器

时间:2024-02-28 09:02:23浏览次数:27  
标签:11 java 自定义 SpringMVC 类型 date 转换器

自定义类型转换器

SpringMVC在进行请求参数绑定时,自动进行了类型转换,前端传来的参数都是字符串,而控制器中的方法在接收时,可能会用到其他数据类型(如:Date、Integer、Double等),以日期类型为例,前端传的日期格式多样,SpringMVC自动转换类型的格式(2011/11/11)支持不了这么多类型,故有的日期格式(如:2011-11-11)需要自行转换:自定义类型转换器实现
在这里插入图片描述
在这里插入图片描述

25-Mar-2022 10:30:27.278 璀﹀憡 [http-nio-8080-exec-87] org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.logException Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'user' on field 'date': rejected value [2011-11-11]; codes [typeMismatch.user.date,typeMismatch.date,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.date,date]; arguments []; default message [date]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'date'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2011-11-11'; nested exception is java.lang.IllegalArgumentException]]

步骤如下:

  1. 创建自定义类型转换器
package cn.itcast.utils;

import org.springframework.core.convert.converter.Converter;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author 商务小本本
 * Converter<S,T>的两个泛型
 *	S:原类型
 *	T:要转换成的类型
 */
public class StringToDateConverter implements Converter<String, Date> {
    /**
     *
     * @param s 传入的原类型数据,在这就是字符串
     * @return
     */
    @Override
    public Date convert(String s) {
        if (s == null){
            throw new RuntimeException("请您传入数据");
        }
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            return dateFormat.parse(s);
        } catch (ParseException e) {
            throw new RuntimeException("数据类型转换出现错误");
        }
    }
}
  1. 配置自定义类型转换器并注入创建的自定义类型转换器
<bean class="org.springframework.context.support.ConversionServiceFactoryBean" id="conversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="cn.itcast.utils.StringToDateConverter"></bean>
        </set>
    </property>
</bean>
  1. 开始SpringMVC对自定义类型转换器的支持
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean"></mvc:annotation-driven>

标签:11,java,自定义,SpringMVC,类型,date,转换器
From: https://www.cnblogs.com/wzzzj/p/18038906

相关文章

  • SpringMVC系列之(五)POST请求中文乱码
    POST请求中文乱码1.配置解决中文乱码的过滤器web.xml中增加如下代码<filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><para......
  • SpringMVC系列之(四)请求参数的绑定
    请求参数的绑定获取前端传过来的参数的过程,如:Servlet的getParameter方法SpringMVC中的请求参数绑定:通过反射实现,SpringMVC中的请求参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的。1.支持的数据类型基本数据类型和字符串实体类型(JavaBean)集合数据类......
  • SpringMVC系列之(三)常用注解
    常用注解1.RequestMappingRequestMapping可以放在类上和方法上,放在类上表示一级目录,或表示某一个具体的模块属性path和value属性的作用相同method决定方法的请求方式params:请求必须包含的参数headers:请求必须包含的请求头以上的属性出现多个,需要同时满足2.RequestPa......
  • SpringMVC系列之(一)入门程序
    Web层,表现层入门程序1.需求描述页面上设置一个链接,点击链接后跳转到成功页面。2.搭建环境从骨架创建项目解决创建项目过慢的问题项目创建后,完善目录结构,创建相应的目录并设置目录类型源代码目录(java)和资源目录(resources)注:我这里已经设置过了,所以就不......
  • PC端web通过自定义协议唤起应用
    写注册表调用WindowsRegistryEditorVersion5.00[HKEY_CURRENT_USER\Software\Classes\test]@="URL:TestProtocol"[HKEY_CURRENT_USER\Software\Classes\test\shell][HKEY_CURRENT_USER\Software\Classes\test\shell\open][HKEY_CURRENT_USER\......
  • ASP.NET Core 过滤器返回自定义响应数据
    自定义返回类publicclassApiResponse{publicintCode{get;set;}publicstringMessage{get;set;}publicobjectData{get;set;}publicApiResponse(intcode,stringmessage,objectdata=null){Code=code;......
  • 在Winform界面中使用自定义控件,丰富界面的效果处理
    我们在《SqlSugar开发框架》中,Winform界面开发部分往往也用到了自定义的用户控件,对应一些特殊的界面或者常用到的一些局部界面内容,我们可以使用自定义的用户控件来提高界面的统一性,同时也增强了使用的便利性。如我们Winform界面中用到的分页控件、附件显示内容、以及一些公司、部......
  • Springboot的starter有什么用以及如何自定义一个starter
    SpringBoot的starter是什么我们都知道SpringBoot的目的就是为了让开发者尽可能的减少项目配置专注于程序代码的编写,而'starter'就是SpringBoot简便开发、自动装配的具体实现。以‘mybatis-spring-boot-starter’为例:<dependency><groupId>org.mybatis.spring.boot<......
  • Python嵌套绘图并为条形图添加自定义标注
    论文绘图时经常需要多图嵌套,正好最近绘图用到了,记录一下使用Python实现多图嵌套的过程。首先,实现Seaborn分别绘制折线图和柱状图。'''绘制折线图'''importseabornassnsimportmatplotlib.pyplotaspltimportwarningswarnings.filterwarnings("ignore","use_inf_as_n......
  • SSH框架使用AOP代理+自定义注解遇到的相关问题总结
    1、AOP注解失效问题编写完成注解和AOP切面类时,在controller中加上注解,注解不生效。在配置文件xml中开启AOP注解:<aop:aspectj-autoproxyproxy-target-class="true"/>如果该配置以加在项目里,但是还是不生效。需要检查一下自己的项目是否是Spring.xm分层配置的。如果分层配置的,需......