SpringMVC中自定义(日期)类型转换器

举报
牛哄哄的柯南 发表于 2021/05/26 15:38:13 2021/05/26
【摘要】 目录 说明解决办法效果展示 说明 注意:表单提交的任何数据类型全部都是字符串类型,但是后台定义Integer类型,数据也可以封装上,说明Spring框架内部会默认进行数据类型转换。 解决办法 1、自定义类型转换器,实现Converter的接口 StringToDateConverter类: package com.Keafmd.util...

说明

注意:表单提交的任何数据类型全部都是字符串类型,但是后台定义Integer类型,数据也可以封装上,说明Spring框架内部会默认进行数据类型转换。

解决办法

1、自定义类型转换器,实现Converter的接口

StringToDateConverter类:

package com.Keafmd.utils;

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

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

/**
 * Keafmd
 *
 * @ClassName: StringToDateConverter
 * @Description: 把字符串转换成日期的转换器
 * @author: 牛哄哄的柯南
 * @date: 2021-01-24 19:27
 */
public class StringToDateConverter implements Converter<String,Date> { @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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

2、注册自定义类型转换器,在springmvc.xml配置文件中编写配置。

<!--配置自定义类型转换器--> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.Keafmd.utils.StringToDateConverter"/> </set> </property> </bean>


<!-- 开启SpringMVC框架注解支持,注解配置spring开启注解mvc的支持 --> <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

效果展示

User类:

package com.Keafmd.domain;

import java.io.Serializable;
import java.util.Date;

/**
 * Keafmd
 *
 * @ClassName: User
 * @Description:
 * @author: 牛哄哄的柯南
 * @date: 2021-01-24 16:14
 */
public class User implements Serializable { private String uname; private Integer age; private Date birthday; public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String toString() { return "User{" + "uname='" + uname + '\'' + ", age=" + age + ", birthday=" + birthday + '}'; }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

控制器代码:

package com.Keafmd.controller;

import com.Keafmd.domain.Account;
import com.Keafmd.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Keafmd
 *
 * @ClassName: ParamController
 * @Description:
 * @author: 牛哄哄的柯南
 * @date: 2021-01-24 15:57
 */

@Controller
@RequestMapping("/param")
public class ParamController { /** * 自定义类型转换器 * @param user * @return */ @RequestMapping("/saveUser") public String testParam(User user){ System.out.println(user); return "success"; }


}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

jsp代码:

<%--
  Created by IntelliJ IDEA.
  User: Keafmd
  Date: 2021/1/24
  Time: 15:55
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head> <title>请求参数绑定</title>
</head>
<body>

<%--自定义类型转换器--%>
<form action="param/saveUser" method="post"> 用户姓名:<input type="text" name="uname" /><br/> 用户年龄:<input type="text" name="age" /><br/> 用户生日:<input type="text" name="birthday" /><br/> <input type="submit" value="提交">
</form>

</body>
</html>


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

浏览器输入:
在这里插入图片描述
输出结果:

User{uname='牛哄哄的柯南', age=21, birthday=Sat Jan 01 00:00:00 CST 2000}

  
 
  • 1

以上就是SpringMVC中自定义(日期)类型转换器的全部内容。

看完如果对你有帮助,感谢点赞支持!
如果你是电脑端的话,看到右下角的 “一键三连” 了吗,没错点它[哈哈]

在这里插入图片描述

加油!

共同努力!

Keafmd

文章来源: keafmd.blog.csdn.net,作者:牛哄哄的柯南,版权归原作者所有,如需转载,请联系作者。

原文链接:keafmd.blog.csdn.net/article/details/113098996

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。