Spring 启动时 Jackson 无法验证 java.util.Date
Spring boot with Jackson Unable to Validate java.util.Date
我需要使用模式 'yyyy-MM-dd HH:mm:ss' 验证日期。我在杰克逊版本 2.10.2 中使用 util date
而且我不能按照公司要求转到 java 8 localdate。我发现了很多关于这个问题的问答,其中 none 正确地解决了我的问题。
import com.fasterxml.jackson.annotation.*;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"provisionedDate",
})
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY,
getterVisibility = JsonAutoDetect.Visibility.NONE,
setterVisibility = JsonAutoDetect.Visibility.NONE)
public class PostProvisionCallback implements Serializable {
@JsonProperty("id")
private String id;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
@NotNull(message = "provisionedDate cannot be null")
@JsonProperty("provisionedDate")
private Date provisionedDate;
}
即使我输入无效日期,如“20201-0612213-17 09:26:12”,这仍然被评估为有效日期。什么是完美的解决方案。?但是如果我将日期输入为“2020/03/04 09:26:12”,则应用程序会抛出内部服务器错误异常。
SimpleDateFormat
处理实际的可配置解析。您可以 set the value of lenient
为 false
.
替换
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
和
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", lenient = OptBoolean.FALSE)
我需要使用模式 'yyyy-MM-dd HH:mm:ss' 验证日期。我在杰克逊版本 2.10.2 中使用 util date 而且我不能按照公司要求转到 java 8 localdate。我发现了很多关于这个问题的问答,其中 none 正确地解决了我的问题。
import com.fasterxml.jackson.annotation.*;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"provisionedDate",
})
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY,
getterVisibility = JsonAutoDetect.Visibility.NONE,
setterVisibility = JsonAutoDetect.Visibility.NONE)
public class PostProvisionCallback implements Serializable {
@JsonProperty("id")
private String id;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
@NotNull(message = "provisionedDate cannot be null")
@JsonProperty("provisionedDate")
private Date provisionedDate;
}
即使我输入无效日期,如“20201-0612213-17 09:26:12”,这仍然被评估为有效日期。什么是完美的解决方案。?但是如果我将日期输入为“2020/03/04 09:26:12”,则应用程序会抛出内部服务器错误异常。
SimpleDateFormat
处理实际的可配置解析。您可以 set the value of lenient
为 false
.
替换
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
和
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", lenient = OptBoolean.FALSE)