400のエラーと「springmvcエンティティ類は時間文字列のjson要求を受信する」
springmvcはエンティティクラスを使用してパラメータを受信します。
この問題は、springmvcのプロファイルにAnnotationMethodhandler Adapterというカテゴリーを追加する必要があります。具体的な構成は、ブログを参照してください。
リンクを参考にして、このまとめはとても全面的で、いいですね。その中で便利な方法を採用しました。は、一般的に400のエラーがbad requestエラーであり、要求パラメータと受信パラメータが一致しないことが多い。 通常のjson要求では、時間があれば、時間文字列 しかない。エンティティクラスで定義される時間フィールドのタイプは、Dateタイプ:prvate Date eventTime;
400 bad requestを間違えました。
この問題は、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エラー表現説明// , :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を間違えました。