美文网首页
SpringMVC 自定义类型转换器

SpringMVC 自定义类型转换器

作者: 阿杰_96c5 | 来源:发表于2020-04-07 22:58 被阅读0次

    1 使用场景:

    时间格式: 2020-01-01 无法实现类型由String到Date的直接转换
    实体类:

    public class User implements Serializable {
    
        private String uname;
    
        private Integer age;
    
        private Date date;
    }
    

    jsp 代码:

    <%--自定类型转换器 时间格式: 2020-01-01--%>
    <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="提交"><br/>
    </form>
    

    控制器代码:

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

    报错:

    Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'

    2 使用步骤

    1 自定义类型转换器,实现 Converter 接口,该接口有两个泛型
    /**
     * 字符串转换日期
     */
    public class StringTpDateConverter implements Converter<String, Date> {
    
    
        @Override
        public Date convert(String s) {
            if(s == null){
                throw new RuntimeException("请您传入数据");
            }
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            // 把字符串转换成日
            try {
                return df.parse(s);
            } catch (ParseException e) {
                throw new RuntimeException("数据转换出现错误");
            }
        }
    }
    
    2 注册自定义类型转换器,在springmvc.xml配置文件中编写配置
    <!-- 配置自定义转换器-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters" >
            <set>
                <bean class="org.example.utils.StringTpDateConverter"></bean>
            </set>
        </property>
    </bean>
    
    3 在 annotation-driven 标签中引用配置的类型转换服务
    <!-- 配置spring开启注解mvc的支持-->
    <!-- 引用自定义类型转换器 -->
    <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
    

    相关文章

      网友评论

          本文标题:SpringMVC 自定义类型转换器

          本文链接:https://www.haomeiwen.com/subject/ntdaphtx.html