400のエラーと「springmvcエンティティ類は時間文字列のjson要求を受信する」

2606 ワード

springmvcはエンティティクラスを使用してパラメータを受信します。
この問題は、springmvcのプロファイルにAnnotationMethodhandler Adapterというカテゴリーを追加する必要があります。具体的な構成は、ブログを参照してください。


    
        
            
                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要求では、時間があれば、時間文字列
  • しかない。
  • エンティティクラスで定義される時間フィールドのタイプは、Dateタイプ:prvate Date eventTime;
  • //    ,    :Content-Type=“application/json”
    //  body  
    {
        "projectId": "SZ0112",
        "deviceId": "c55d9e190",
        "status": 1,
        "eventTime": "2019-10-22 13:31:23"
    }
    
    以上の3つの条件に基づいて、springmvcのcontrollerでは、@request Bodyを使用して要求を受信したjsonは、Steringタイプの「eventTime」を使用できません。「2019-22 13:31」属性フィールドは、エンティティタイプの時間フィールドprvate Date eventTimeにマッチします。
    400 bad requestを間違えました。