javamvc框架,SpringMVC框架----SpringMVC的自定义类型转换器

 2023-09-28 阅读 30 评论 0

摘要:上一段我们介绍了请求参数的绑定 SpringMVC请求参数的绑定 在请求参数绑定的时候,有时候会遇到一些问题,如自定义类型转换器异常 1.自定义类型转换器演示异常 javamvc框架。现在有一个页面,想给服务器提交数据,现有uname,age,其中age是100.但是往

上一段我们介绍了请求参数的绑定
SpringMVC请求参数的绑定
在请求参数绑定的时候,有时候会遇到一些问题,如自定义类型转换器异常

1.自定义类型转换器演示异常

javamvc框架。现在有一个页面,想给服务器提交数据,现有uname,age,其中age是100.但是往后台提交的东西,100也是作为字符串来出现的,或者只要是页面,提交的任何数据,全部都是字符串类型的。在后台我们可以把数据全部都拿到。如果你提交的是一个字符串的话,后台类型是Integer,程序也没有报错,
springmvc内部中自动的进行了数据类型转换。
String-----Integer
即便字符串转日期,也是可以的,但是格式可能有些问题。
比如2020/11/11.可能会不报错,如果2020-11-11,可能不支持这个格式。
user类中有3个属性,还包括set和get方法,以及tostring方法

private String uname;
private Integer age;
private Date date;

index.jsp

<form action="param/saveUser" method="post">用户姓名:<input type="text" name="uname"/><br/>用户年龄:<input type="text" name="age"/><br/>用户生日:<input type="text" name="date"/><br/><input type="submit" value="提交"/>
</form>

controller

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

在地址栏中输入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说明数据封装出错了,数据没封装进去,控制台没看到执行这个代码,在做类型转换的时候出错了

2.自定义类型转换器代码编写

第一步:定义一个类,实现Converter接口,该接口有两个泛型
public interface Converter<S,T>{
}

(注册好了类型转换器之后,就不会出错了,前端控制器会找类型转换器帮助我们将字符串转换成为我们的日期)
Converter类型转换总接口
Converter有很多实现类
这个接口有两个泛型,前面指的是字符串,后面指的是具体类型
如果T是日期,则字符串转换为日期
注意,导入的是这个包

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

代码


/*把字符串转换为日期*/
public class StringToDateConverter implements Converter<String,Date> {@Override/** 参数:传入过来的字符串* */public Date convert(String source) {if(source==null){throw new RuntimeException("请您传入数据");}else{DateFormat df=new SimpleDateFormat("yyyy-MM-dd");//把字符串转换为日期try {return df.parse(source);} catch (ParseException e) {throw new RuntimeException("数据类型转换出现了错误");}}}
}

第二步:在 spring配置文件中配置类型转换器
spring 配置类型转换器的机制是,将自定义的转换器注册到类型转换服务中去。

<!--配置自定义类型转换器-->
<bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean"><!--我们需要把自己写的类型转换器注册一下--><property name="converters"><set><bean class="cn.yujie.utils.StringToDateConverter"/></set></property>
</bean>

第三步:在 annotation-driven标签中引用配置的类型转换服务,让类型转换器生效

<!--开启springmvc框架注解支持-->
<mvc:annotation-driven conversion-service="conversionService"/>

在这里插入图片描述
在这里插入图片描述

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/101695.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息