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

springmvc使用实体类接收参数

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


<!-- 用于将对象转换为 JSON ,支持前端表单请求和json请求,接收请求时自动转成pojo对象 -->
    <bean id="stringConverter"
          class="org.springframework.http.converter.StringHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/plain;charset=UTF-8</value>
            </list>
        </property>
    </bean>
    <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/plain;charset=utf-8</value>
                <value>application/json;charset=utf-8</value>
            </list>
        </property>
    </bean>

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="stringConverter"/>
                <ref bean="jsonConverter"/>
            </list>
        </property>
    </bean>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值