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

爱被打了一巴掌 2023-01-10 14:39 233阅读 0赞

目录

  • 说明
  • 解决办法
  • 效果展示

说明

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

解决办法

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

StringToDateConverter类:

  1. package com.Keafmd.utils;
  2. import org.springframework.core.convert.converter.Converter;
  3. import java.text.DateFormat;
  4. import java.text.ParseException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. /** * Keafmd * * @ClassName: StringToDateConverter * @Description: 把字符串转换成日期的转换器 * @author: 牛哄哄的柯南 * @date: 2021-01-24 19:27 */
  8. public class StringToDateConverter implements Converter<String,Date> {
  9. @Override
  10. public Date convert(String s) {
  11. if(s==null){
  12. throw new RuntimeException("请传入数据");
  13. }
  14. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
  15. try {
  16. //把字符串转为日期
  17. return dateFormat.parse(s);
  18. } catch (ParseException e) {
  19. throw new RuntimeException("数据类型转换错误");
  20. }
  21. }
  22. }

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

  1. <!--配置自定义类型转换器-->
  2. <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
  3. <property name="converters">
  4. <set>
  5. <bean class="com.Keafmd.utils.StringToDateConverter"/>
  6. </set>
  7. </property>
  8. </bean>
  9. <!-- 开启SpringMVC框架注解支持,注解配置spring开启注解mvc的支持 -->
  10. <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

效果展示

User类:

  1. package com.Keafmd.domain;
  2. import java.io.Serializable;
  3. import java.util.Date;
  4. /** * Keafmd * * @ClassName: User * @Description: * @author: 牛哄哄的柯南 * @date: 2021-01-24 16:14 */
  5. public class User implements Serializable {
  6. private String uname;
  7. private Integer age;
  8. private Date birthday;
  9. public String getUname() {
  10. return uname;
  11. }
  12. public void setUname(String uname) {
  13. this.uname = uname;
  14. }
  15. public Integer getAge() {
  16. return age;
  17. }
  18. public void setAge(Integer age) {
  19. this.age = age;
  20. }
  21. public Date getBirthday() {
  22. return birthday;
  23. }
  24. public void setBirthday(Date birthday) {
  25. this.birthday = birthday;
  26. }
  27. @Override
  28. public String toString() {
  29. return "User{" +
  30. "uname='" + uname + '\'' +
  31. ", age=" + age +
  32. ", birthday=" + birthday +
  33. '}';
  34. }
  35. }

控制器代码:

  1. package com.Keafmd.controller;
  2. import com.Keafmd.domain.Account;
  3. import com.Keafmd.domain.User;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import javax.servlet.ServletContext;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import javax.servlet.http.HttpSession;
  10. /** * Keafmd * * @ClassName: ParamController * @Description: * @author: 牛哄哄的柯南 * @date: 2021-01-24 15:57 */
  11. @Controller
  12. @RequestMapping("/param")
  13. public class ParamController {
  14. /** * 自定义类型转换器 * @param user * @return */
  15. @RequestMapping("/saveUser")
  16. public String testParam(User user){
  17. System.out.println(user);
  18. return "success";
  19. }
  20. }

jsp代码:

  1. <%--
  2. Created by IntelliJ IDEA.
  3. User: Keafmd
  4. Date: 2021/1/24
  5. Time: 15:55
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9. <html>
  10. <head>
  11. <title>请求参数绑定</title>
  12. </head>
  13. <body>
  14. <%--自定义类型转换器--%>
  15. <form action="param/saveUser" method="post">
  16. 用户姓名:<input type="text" name="uname" /><br/>
  17. 用户年龄:<input type="text" name="age" /><br/>
  18. 用户生日:<input type="text" name="birthday" /><br/>
  19. <input type="submit" value="提交">
  20. </form>
  21. </body>
  22. </html>

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

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

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

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

在这里插入图片描述

加油!

共同努力!

Keafmd

发表评论

表情:
评论列表 (有 0 条评论,233人围观)

还没有评论,来说两句吧...

相关阅读