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、引用转换器

  • 相关阅读:
    location 匹配规则
    nginx+keepalived 高可用方案
    Nginx 静态文件服务
    web服务器-nginx优化
    Oracle 修改字符集(AL32UTF8 转换成UTF8字符集)
    xshell复制粘贴
    关于mysql中的DDL,DML,DQL和DCL
    LVS实现Kubernetes集群高可用
    k8s实践(一):Centos7.6部署k8s(v1.14.2)集群
    Centos7.6部署k8s v1.16.4高可用集群(主备模式)
  • 原文地址:https://www.cnblogs.com/deityjian/p/11498002.html
Copyright © 2011-2022 走看看