100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java converter转换器_在SpringMVC中设置自定义类型转换器Converter

java converter转换器_在SpringMVC中设置自定义类型转换器Converter

时间:2022-02-19 21:07:43

相关推荐

java converter转换器_在SpringMVC中设置自定义类型转换器Converter

前言

在SpringMVC中为我们提供了许多内置的类型转换器,当我们在HTML表单中发起一个请求时,Spring会根据表单项中name属性的值映射到POJO的属性名,调用相对性属性的set方法帮我们把表单中的多个属性转化为一个POJO对象,这样我们在Controller方法中就可以直接使用POJO作为参数得到提交的数据。但有时候会存在其他情况,比如你把一个POJO对象的多个属性都写在一个input标签中,在这种情况下Spring无法自动帮我转化为POJO对象,这种情况下我们可以通过设置自定义类型转化器,按照我们的规则去转化成POJO对象。

代码

首先,写一个类并实现Converter接口,在这个接口中有一个方法T convert(S var1),在该方法中设置类型转化规则。其中,S是传入的类型,T放回的类型。 public interface Converter{ @Nullable T convert(S var1); }

Dome如下

public class BookConverter implements Converter {

@Override

public Book convert(String s) {

String[] split = s.split("-");

Book book = null;

if (split.length==2){

book = new Book();

book.setBname(split[0]);

book.setPrice(new BigDecimal(split[1]));

}

return book;

}

}

Book类为

public class Book {

private String bname;

private BigDecimal price;

//省略get和set方法

然后在SpringMVC的配置文件中配置ConversionServiceFactoryBean

//这里可以有多个自定义的类型转化器

在input标签中输入

JAVA从入门到入土-9999

Spring会根据我们自定义的规则转化为所需要的类型,在Controller方法中便可以直接使用对应的类型作为参数接收传给后端的参数

public String testConverter(@RequestParam("book") Book book){

如果在项目中使用了@NumberFormat或@DateTimeFormat注解,则需要使用FormattingConversionServiceFactoryBean对象工厂,在FormattingConversionServiceFactoryBean中已经注册了NumberFormatAnnotationFormatterFactroy和JodaDateTimeFormatAnnotationFormatterFactroy,支持使用@NumberFormat、@DateTimeFormat对接对数字类型和日期类型的格式化

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