700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > SpringMVC框架----SpringMVC的自定义类型转换器

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

时间:2022-08-11 11:34:05

相关推荐

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

上一段我们介绍了请求参数的绑定

SpringMVC请求参数的绑定

在请求参数绑定的时候,有时候会遇到一些问题,如自定义类型转换器异常

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

现在有一个页面,想给服务器提交数据,现有uname,age,其中age是100.但是往后台提交的东西,100也是作为字符串来出现的,或者只要是页面,提交的任何数据,全部都是字符串类型的。在后台我们可以把数据全部都拿到。如果你提交的是一个字符串的话,后台类型是Integer,程序也没有报错,

springmvc内部中自动的进行了数据类型转换。

String-----Integer

即便字符串转日期,也是可以的,但是格式可能有些问题。

比如/11/11.可能会不报错,如果-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"/>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。