我有这段代码:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
protected Date statusDate;
但不知何故它接受日期格式,例如 -
"statusDate": "2017-13-27"
or
"statusDate": "201823-12-12"
是否可以验证请求中的格式(而不是手动)?
@JsonFormat 用于在返回 statusDate 作为响应时设置输出格式。
最好创建一个接受 String statusDate 的 DTO 对象,然后在控制器中将其转换为日期格式。
要验证字符串格式的日期,可以使用@Pattern
public class StatusDateDto {
@NotNull(message="Status date is a required field")
@Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2}", message="Invalid status date")
private String statusDate;
//Getter and setter
}
public ResponseEntity<?> postStatusDate(@Valid @RequestBody StatusDateDto dateDto, BindingResult result) {
if (result.hasFieldErrors()) {
String errors = result.getFieldErrors().stream()
.map(p -> p.getDefaultMessage()).collect(Collectors.joining("\n"));
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errors);
}
// Convert the String to Date after validation
return ResponseEntity.ok().build();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)