• Spring MVC 类型转换


     

    SpringMVC类型转换:

      1 日期类型转换:

      private Date birthday;
      <label for="">生日:<input type="text" name="birthday" /></label><br />

      针对日期类型,springmvc默认没有做类型转换,因此会报告400错误,此时需要配置日期类型转换器

        1.1  在pojo层添加注解:@DateTimeFormat()

            pattern:日期格式(前端传输的日期也必须是这个格式)

    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date birthday;

        1.2 自定义类型转换器

    public class DateConverter implements Converter<String, Date>{
        /**
         * 将字符串转换成日期格式,重写convert方法
         */
        @Override
        public Date convert(String source) {
            
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            try {
                sdf.setLenient(false);//是否宽松解析:默认true
                return sdf.parse(source);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
        <!-- 配置注解驱动 -->
        <mvc:annotation-driven conversion-service="myConversion" />
    <!-- 类型转换器 --> <bean id="myConversion" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.roxy.springmvc.converter.DateConverter"></bean> </set> </property> </bean>

        1.3 在controller中添加方法

        @InitBinder
        public void initBinder(ServletRequestDataBinder binder){
            binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
        }

      2 对象类型转换:

        前端传递的数据为String类型,而后台处理的是对象类型

    public class UserConverter implements Converter<String, User>{
        /**
         * 将字符串转换成对象
         */
        @Override
        public User convert(String source) {
            if(source != null) {
                String[] split = source.split("|");
                if(split != null && split.length == 3) {
                    String username = split[0];
                    Integer age = Integer.parseInt(split[1]);
                    String email = split[2];
                    String birday = split[3];
                    
                    User user = new User();
                    user.setUsername(username);
                    user.setAge(age);
                    user.setEmail(email);
                    
                    return user;
                }
            }
            return null;
        }
    <bean class="com.roxy.springmvc.converter.UserConverter"></bean>
    
  • 相关阅读:
    C++:随机数生成
    C++:typedef 与 #define 的区别
    读书笔记
    从零开始:Spring Security Oauth2 讲解及实战
    SpingCloud:Gateway+Nginx+Stomp+Minio构建聊天室并进行文件传输
    Docker image-Ubuntu(jessie)下postgresql-client安装方法
    7张图了解kafka基本概念
    打包上传python代码到pypi,通过pip安装使用
    Asp.Net Core 中的HTTP协议详解
    LeetCode 1931. Painting a Grid With Three Different Colors(DP)
  • 原文地址:https://www.cnblogs.com/roxy/p/7604022.html
Copyright © 2020-2023  润新知