zoukankan      html  css  js  c++  java
  • 09.SpringMVC之类型转换

    一. 类型转换器

    前端传入的值,从表单中传入的值,都是字符串或者是字符串数组的形式传入的,在后端需要进行手动的转换类型,然后才能正确的使用。 框架一般对常见的数据类型的转换进行了封装提供,如字符串转换成数字等。

    有标量的转换器,即字符串到数字,字符串到Boolean等。

     也有集合类型的转换器, 如数组到集合, 拼接型字符器(如,) 到集合等。

     发现,没有常用的字符串到日期 Date 的转换器。 

    1、定义转换器,实现接口Converter<From,To>

    package cn.converters;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.regex.Pattern;
    
    import org.springframework.beans.TypeMismatchException;
    import org.springframework.core.convert.converter.Converter;
    /**
     * 
     * @author 景佩佩
     *
     *S:Source 源类型
     *T:Target 目标类型
     */
    public class DateConverter implements Converter<String, Date> {
    
        public Date convert(String source) {
            //SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            SimpleDateFormat sdf=getDateFormat(source);
            try {
                return sdf.parse(source);
            } catch (ParseException e) {
                //e.printStackTrace();
            }
            return null;
        }
    
        private SimpleDateFormat getDateFormat(String source){
            //一个字符串和一个特定形式能否匹配,正则
            SimpleDateFormat sdf=new SimpleDateFormat();
            if (Pattern.matches("^\d{4}-\d{2}-\d{2}$", source)) {
                sdf=new SimpleDateFormat("yyyy-MM-dd");
            }else if (Pattern.matches("^\d{4}/\d{2}/\d{2}$", source)) {
                sdf=new SimpleDateFormat("yyyy/MM/dd");
            }else if (Pattern.matches("^\d{4}\d{2}\d{2}$", source)) {
                sdf=new SimpleDateFormat("yyyyMMdd");
            }
            return sdf;
        }
        
    }

    2、注册转换器

     3、引用转换器

  • 相关阅读:
    windows下快速启动或关闭系统服务方法
    java学习-struts基础(一)
    android学习-Adapter适配器进阶
    java学习-GET方式抓取网页(UrlConnection和HttpClient)
    搜索技术的历史
    android学习-数据存储(一)-----SQLite源码分析
    Python+Tkinter 抽奖小程序
    随机生成激活码
    爬虫9:Scrapy-获取steam网站前50页游戏的url
    爬虫8:Scrapy-取内容
  • 原文地址:https://www.cnblogs.com/deityjian/p/11498002.html
Copyright © 2011-2022 走看看