• springmvc的初始化参数绑定


     一、springmvc的初始化参数绑定

        此种和我们之前说的类型转换非常相似,可以看作是一种类型转换

        在初始化参数绑定时  重要的是参数类型

        -------------------单日期的绑定

     二、 配置步骤:

        步骤一:在applicationcontext.xml中只需要配置一个包扫描器即可

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
         xmlns:mvc="http://www.springframework.org/schema/mvc"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd ">
     
         <!--让spring扫描包下所有的类,让标注spring注解的类生效  -->
         <context:component-scan base-package="cn.yxj.controller"/>
         
    </beans>

    步骤二:在处理器类中配置绑定方法  使用@InitBinder注解

        在这里首先注册一个用户编辑器 参数一为目标类型   propertyEditor为属性编辑器,此处我们选用 CustomDateEditor属性编辑器,

        参数一为想转换的日期格式,参数二表示是否允许为空

    @InitBinder
            public void databinder(WebDataBinder binder){
                System.out.println("11111");
                DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
                binder.registerCustomEditor(Date.class,new CustomDateEditor(df, true) );
            }

    单个日期的参数绑定配置完毕

    -------------------多日期的绑定

    配置步骤:

    1.属性编辑器

    此时我们需要考虑使用哪个属性编辑器,需要定义自己的属性编辑器

    大致的配置方式如单日期相似,只需要更换属性编辑即可

    自定义的属性编辑器,需要我们继承PropertiesEditor,重写里面的setAsText方法,使用setValue方法赋值

    package cn.yxj.propertyEdit;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.regex.Pattern;
    
    import org.springframework.beans.propertyeditors.PropertiesEditor;
    
    
    public class MyDataEdit extends PropertiesEditor{
    
        @Override
        public void setAsText(String text) throws IllegalArgumentException {
            SimpleDateFormat sdf=getDateFormat(text);
            try {
                Date date = sdf.parse(text);
                setValue(date);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
    
        private SimpleDateFormat getDateFormat(String text) {
            if(Pattern.matches("^\d{4}-\d{2}-\d{2}$", text)){
                return new SimpleDateFormat("yyyy-MM-dd");
            }else if(Pattern.matches("^\d{4}/\d{2}/\d{2}$", text)){
                return new SimpleDateFormat("yyyy/MM/dd");
            }else if(Pattern.matches("^\d{4}\d{2}\d{2}$", text)){
                return new SimpleDateFormat("yyyyMMdd");
            }else if(Pattern.matches("^\d{4}年\d{2}月\d{2}日$", text)){
                return new SimpleDateFormat("yyyy年MM月dd日");
            }
            return null;
        }
    
        
        
    
    }

    步骤二:在处理器类中使用我们自定的属性编辑器

    @InitBinder
            public void databinder(WebDataBinder binder){
                System.out.println("11111");
                DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
                binder.registerCustomEditor(Date.class,new MyDataEdit() );
            }
  • 相关阅读:
    TCP带外数据
    ASP.Net Core 返回的json数据,自定义日期格式
    C# 简单的区块链实现
    PowerShell自动部署ASP.NET Core程序到 IIS
    ASP.NET Core依赖注入多个服务实现类
    EF Core 2.0 执行原始查询如何防止SQL注入
    C#7 进入快速迭代道路
    QuartzNet 任务管理系统
    WebApi如何传递参数
    C# 快速高效率复制对象另一种方式 表达式树
  • 原文地址:https://www.cnblogs.com/yejiaojiao/p/6163647.html
Copyright © 2020-2023  润新知