zoukankan      html  css  js  c++  java
  • SpringMVC 自定义类型转换

     类型转换可以将请求参数转换为指定的类型、指定的格式(数据的格式化),然后传给业务方法的参数。

    Spring MVC内置了常用的类型转换器。如果内置的类型转换器满足不了需求,可以使用自定义的类型转换。

    自定义类型转换有2种方式:

    • 使用Converter
    • 使用Formatter

    Converter方式

    (1)新建包com.chy.converter,包下新建类DateConverter,作为自定义的类型转换器

    // 需要实现Converter接口,<原始类型,目标类型>
    public class DateConverter implements Converter<String, Date> {
    
        //参数是请求参数中的原始数据,返回值是转换好的数据(目标类型)
        @Override
        public Date convert(String source) {
           // 经过一些操作,将原始类型的数据,转换为目标类型的数据并返回
           // ......
        }
    
    }

    (2)在spring mvc的配置中添加:

        <!--配置ConversionService-->
        <bean name="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
            <!--使用集合传入自定义的converter-->
            <property name="converters">
                <set>
                    <!--一个bean对应一个类型转换器-->
                    <bean class="com.chy.com.chy.converter.DateConverter" />
                </set>
            </property>
        </bean>
    
        <!--指定要使用的ConversionService-->
        <mvc:annotation-driven conversion-service="conversionService" />

    Formatter方式

    (1)新建包com.chy.converter,包下新建类DateFormatter

    // 需要实现Converter接口,<目标类型>
    public class DateConverter implements Formatter<Date> {
        //parse()是转换,将原始类型转换为目标类型,参数是原始类型(String)
        @Override
        public Date parse(String source, Locale locale) throws ParseException {
            
        }
    
        //print()是格式化输出,将目标类型转换为指定格式的字符串,参数是parse()转换好的目标类型
        @Override
        public String print(Date date, Locale locale) {
            
        }
    }

    Formatter的类型转换、数据格式化是分开的,写在2个方法里。

    (2)在spring  mvc的配置中添加:

        <!--配置ConversionService-->
        <bean name="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
            <!--使用集合传入自定义的formatter-->
            <property name="formatters">
                <set>
                    <!--一个bean对应一个formatter-->
                    <bean class="com.chy.com.chy.converter.DateConverter" />
                </set>
            </property>
        </bean>
    
        <!--指定要使用的ConversionService-->
        <mvc:annotation-driven conversion-service="conversionService" />

      

    踩过的坑:

    xmlns:mvc="http://www.springframework.org/schema/cache"

    IDEA自动导入的约束不对,将cache改为mvc,xsi中对应的部分也要改。

  • 相关阅读:
    WIN8.1优化
    Iframe跨域嵌入页面自动调整高度的办法
    win8优化
    160多条Windows 7 “运行”命令
    用 C# 代码如何实现让你的电脑关机,重启,注销,锁定,休眠,睡眠
    system32下 exe文件作用
    html高度百分比分配
    Django启程篇
    自适应网页前端设计相关
    crontab定时任务及jar包等问题
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12245276.html
Copyright © 2011-2022 走看看