06 数据绑定之类型转化

本文将阐述springmvc中的数据类型转化。

1、环境约束

  • win10 64位操作系统
  • idea2018.1.5
  • jdk-8u162-windows-x64
  • spring4.2.4

2、前提约束

3、操作步骤

1.内置转化

springmvc内置了很多转化器,可以完成大部分的数据转化工作,换言之,绝大多数情况下我们可以不用去关心数据类型的转换,但对于一些特殊的数据类型,比如日期、时间戳等,是需要用户自定义类型转换的。

2.当前Controller

我们先来完成仅对当前Controller起作用的转化器。

  • 在src文件夹下创建net.wanho.controller.InitBinderController.java,内容如下:

import net.wanho.ssm.entity.Phone;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.beans.PropertyEditorSupport;
import java.text.SimpleDateFormat;
import java.util.Date;

@Controller
public class InitBinderController {
    @InitBinder
    public void init(WebDataBinder binder)
    {
        binder.registerCustomEditor(Date.class, new PropertyEditorSupport(){
            @Override
            public String getAsText() {
                return super.getAsText();
            }

            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                try {
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
                    Date date = simpleDateFormat.parse(text);
                    setValue(date);
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }

            }
        });
    }

    @RequestMapping("/init/dateformat")
    @ResponseBody
    public String test0(Date date)
    {
        return date.toString();
    }
}

3.全局Controller

  • 在src文件夹下创建net.wanho.convertor.String2DateConvertor.java,内容如下:
import org.springframework.core.convert.converter.Converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class String2DateConvertor implements Converter<String,Date> {

    @Override
    public Date convert(String s) {

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = simpleDateFormat.parse(s);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
}
  • 在spring-mvc.xml中加入以下内容:
    <mvc:annotation-driven  conversion-service="conversion-service" ></mvc:annotation-driven>
    <bean id="conversion-service"
          class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <list>
                <bean class="net.wanho.convertor.String2DateConvertor"></bean>
            </list>
        </property>
    </bean>
  • 注释掉InitBinderController.java中的@InitBinder注解
  • 启动tomcat,测试,在浏览器中输入 http://localhost:8080/init/dateformat?date=2019-11-11
    当前这个转换器,无论对哪一个Controller请求都会起作用。除了采用这种配置的方式完成全局的类型转换外,还可以采用@ControllerAdvice这种横切性的技术,后面我们将会阐述。
    以上就是spring中数据类型的转换。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值