javascript
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對接對數字類型和日期類型的格式化
總結
以上是生活随笔為你收集整理的java converter转换器_在SpringMVC中设置自定义类型转换器Converter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux学习之运维篇
- 下一篇: python计算选手最后得分并取出前三名