400错误与“springmvc实体类接收带时间字符串的json请求”

springmvc使用实体类接收参数

这个问题,需要在springmvc的配置文件中,添加上AnnotationMethodHandlerAdapter这个类,具体配置参考博客:
参考1,
参考2
结合两个博客,我的配置



    
        
            
                text/plain;charset=UTF-8
            
        
    
    
        
            
                text/plain;charset=utf-8
                application/json;charset=utf-8
            
        
    

    
        
            
                
                
            
        
    

json请求中带时间字符串,怎么处理

参考链接,这个总结的很全面,赞!
我采用了其中比较方便的一种方式

@Table(name = "device_status")
public class DeviceStatus {

    /**
     * 主键
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "project_id")
    private String projectId;
    @Column(name = "device_id")
    private String deviceId;
    private Byte status;
    @Column(name = "event_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
//    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
    private Date eventTime;
//此处两种格式注解效果一样

400错误表现说明

  • 一般来说400错误是bad request 错误,通常是请求参数和接受参数不一致导致的。
  • 正常的json请求中,如果有时间,那也只能是时间字符串(String类型)
  • 实体类中定义的时间字段的类型是Date类型:private Date eventTime;
//请求参数,请求头中:Content-Type=“application/json”
//请求body如下
{
    "projectId": "SZ0112",
    "deviceId": "c55d9e190",
    "status": 1,
    "eventTime": "2019-10-22 13:31:23"
}

基于以上3个条件, springmvc 的controller中,使用@requestBody接收请求来的json时无法把String类型的 “eventTime”: "2019-10-22 13:31:23"属性字段匹配到实体类的时间字段private Date eventTime;

于是报错400 bad request

你可能感兴趣的:(java,JavaWeb)