springboot中controller接收Date参数两种写法效果比较

springboot中controller接收Date参数有两种写法
如果不正确处理会报异常

Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date'

正确处理方式为
第一种,在controller中添加initBinder

@InitBinder
public void initBinder(WebDataBinder binder) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}

这种方法对独立的Date参数或Vo对象中的Date参数都有效,且支持传入null值
独立Date参数示例接口

@RequestMapping("/test")
public String test(String echo, Date testDate){
    System.out.println("echo="+echo+",testDate="+testDate);
    return "testDate="+testDate;
}

Vo对象参数示例接口

@RequestMapping("/testVo")
public String testVo(EchoVo echoVo){
  System.out.println("echo="+echoVo.getEcho()+",testDate="+echoVo.getTestDate());
  return "testDate="+echoVo.getTestDate();
}

第二种,在Date参数上使用注解@DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”)
这种同样方法对独立的Date参数或Vo对象中的Date参数都有效,且支持传入null值,只是注解位置有所不同
独立参数写法

@RequestMapping("/test")
public String test(String echo,@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date testDate){
    System.out.println("echo="+echo+",testDate="+testDate);
    return "testDate="+testDate;
}

Vo参数写法

public class EchoVo {
    private String echo;
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date testDate;
    public String getEcho() {
        return echo;
    }
    public void setEcho(String echo) {
        this.echo = echo;
    }
    public Date getTestDate() {
        return testDate;
    }
    public void setTestDate(Date testDate) {
        this.testDate = testDate;
    }
}

下载效果演示demo工程,https://pan.baidu.com/s/171OC4QRKmXvtKVheM7vDbg
下载密码请扫描订阅公众号,回复"密码"获取下载密码
Image text

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot是一个开源的Java框架,用于简化Spring应用程序的开发和部署。ControllerSpring Boot的一个重要组件,用于处理来自客户端的HTTP请求,并返回相应的响应。 在Spring Boot的Controller参数解析是将客户端请求参数值转换为Controller方法的参数的过程。Spring Boot支持多种参数解析方式,包括: 1. PathVariable:通过URL路径的变量值进行参数解析。在Controller方法的参数列表使用@PathVariable注解来指定变量名称,并通过在URL使用{变量名}的方式来传递参数值。 2. RequestParam:通过URL的查询字符串或表单参数进行解析。在Controller方法的参数列表使用@RequestParam注解来指定参数名称,并通过URL使用?参数名=参数值的方式来传递参数值。 3. RequestBody:通过请求体的内容进行解析。在Controller方法的参数列表使用@RequestBody注解来指定参数类型,并自动将请求体的内容转换为对应的Java对象。 4. RequestHeader:通过请求头参数进行解析。在Controller方法的参数列表使用@RequestHeader注解来指定参数名称,并根据请求头参数值进行解析。 5. CookieValue:通过请求的Cookie进行解析。在Controller方法的参数列表使用@CookieValue注解来指定参数名称,并根据请求的Cookie值进行解析。 上述这些参数解析方式可以灵活地组合使用,在Controller方法的参数列表可以同时使用多个注解来实现多种参数解析方式。这样可以方便地获取客户端请求的各种参数值,并进行相应的处理和业务逻辑操作。 总而言之,Spring Boot的Controller参数解析功能使得处理客户端请求变得更加简单和灵活,开发者可以根据具体的需求选择合适的参数解析方式,并通过注解来指定参数的名称和类型,从而精确地获取和处理请求参数值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值