SpringBoot中自定义参数绑定

本文是vhr系列的第十篇,vhr项目地址https://github.com/lenve/vhr

正常情况下,前端传递来的参数都能直接被SpringMVC接收,但是也会遇到一些特殊情况,比如Date对象,当我的前端传来的一个日期时,就需要服务端自定义参数绑定,将前端的日期进行转换。自定义参数绑定也很简单,分两个步骤:

1.自定义参数转换器

自定义参数转换器实现Converter接口,如下:

public class DateConverter implements Converter<String,Date> {
    private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    @Override
    public Date convert(String s) {
        if ("".equals(s) || s == null) {
            return null;
        }
        try {
            return simpleDateFormat.parse(s);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}

convert方法接收一个字符串参数,这个参数就是前端传来的日期字符串,这个字符串满足yyyy-MM-dd格式,然后通过SimpleDateFormat将这个字符串转为一个Date对象返回即可。

2.配置转换器

自定义WebMvcConfig继承WebMvcConfigurerAdapter,在addFormatters方法中进行配置:

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new DateConverter());
    }
}

OK,如上两步之后,我们就可以在服务端接收一个前端传来的字符串日期并将之转为Java中的Date对象了,前端日期控件如下:

<el-date-picker
    v-model="emp.birthday"
    size="mini"
    value-format="yyyy-MM-dd HH:mm:ss"
    style="width: 150px"
    type="date"
    placeholder="出生日期">
</el-date-picker>

服务端接口如下:

@RequestMapping(value = "/emp", method = RequestMethod.POST)
public RespBean addEmp(Employee employee) {
    if (empService.addEmp(employee) == 1) {
        return new RespBean("success", "添加成功!");
    }
    return new RespBean("error", "添加失败!");
}

其中Employee中有一个名为birthday的属性,该属性的数据类型是一个Date,源码我就不贴了,小伙伴直接在本项目源码中查看即可。

原文发布于微信公众号 - 玩转JavaEE(gh_d1ca11234a30)

原文发表时间:2018-01-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小灰灰

SpringMVC之请求参数的获取方式

SpringMVC之请求参数的获取方式 常见的一个web服务,如何获取请求参数? 一般最常见的请求为GET和POST,get请求的参数在url上可以获取,po...

28690
来自专栏闻道于事

Spring框架(二)反射机制, 注入, 单例模式, 自动装载, 延迟加载

 Spring反射机制: 1, 通过spring来获取一个对象的实例 1 <bean id="user" class="com.model.User">...

80480
来自专栏Seebug漏洞平台

Jenkins 未授权远程代码执行漏洞(CVE-2017-1000353)

漏洞概要 Jenkins 未授权远程代码执行漏洞, 允许攻击者将序列化的Java SignedObject对象传输给Jenkins CLI处理,反序列化Obj...

43060
来自专栏大内老A

我所理解的Remoting(3):创建CAO Service Factory使接口和实现相互分离

我们知道对于Remoting,有两种不同的Activation模式:Server Activation和Client Activation。他我在前面的系列文章...

21160
来自专栏Java架构师学习

带你深入了解Java线程中的那些事

引言 说到Thread大家都很熟悉,我们平常写并发代码的时候都会接触到,那么我们来看看下面这段代码是如何初始化以及执行的呢? public class Thre...

35080
来自专栏Hongten

java开发_UUID(Universally Unique Identifier,全局唯一标识符)和GUID(Globally Unique Identifier,全球唯一标识符)

GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifie...

12710
来自专栏程序猿DD

Spring Boot中Web应用的统一异常处理

我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况。Spring Boot提供了一个默认的映射: /error,当处理中抛出异常之后,会转到该请求...

31460
来自专栏闻道于事

Mybatis,Spring,SpringMVC框架面试题

Mybatis测试 1,   Mybatis的核心是(  sqlsessionfactory    ) 2,   使用Mybatis持久化框架进行数据查询需要返...

2.3K50
来自专栏技术碎碎念

Jsp语法、指令及动作元素

一、JSP的语法 1、JSP的模板元素:(先写HTML)    就是JSP中的那些HTML标记    作用:页面布局和美化 2、JSP的Java脚本表达式:  ...

45460
来自专栏Jed的技术阶梯

zookeeper案例之4个逻辑思维训练小题目

14120

扫码关注云+社区

领取腾讯云代金券