因此,我创建了一个类来检查我通过post方法发送的requestbody,我无法阻止出现以下错误:
hv000030:找不到约束“javax.validation.constraints.pattern”验证类型“java.util.date”的验证器。检查“dateto”的配置
类命令:
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.Date;
@Data
@NoArgsConstructor
public class Command {
@Pattern(regexp = "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$",message = "INVALID_DATE_FORMAT")
@NotEmpty(message = "REQUIRED_INPUT")
private Date dateFrom;
@Pattern(regexp = "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$",message = "INVALID_DATE_FORMAT")
@NotEmpty(message = "REQUIRED_INPUT")
private Date dateTo;
}
后处理方法:
@PostMapping(value = "/room/{id}/roomPrices", headers = {
"content-type=application/json" }, consumes = "application/json")
@Operation(tags = "Check room")
public testResponse postTest(@Valid @RequestBody Command command,
@PathVariable String id) {
Command resp = this.roomService.getTest(id,command);
return new testResponse (resp, HttpStatus.CREATED);
}
我之所以不发布postest函数的代码,仅仅是因为在错误出现之前,由于@valid注解,它甚至无法访问,如果约束无效,那么应用程序就不会再进一步。
当我尝试将模式更改为“.*”以确保注解正常工作时,仍然会出现相同的错误。只有当我删除@pattern注解时才会跳过它。
现在我不知道如何解决这个问题。日期数据类型和模式之间是否存在冲突?当另一个命令类的数据类型为string时,它似乎工作正常。
暂无答案!
目前还没有任何答案,快来回答吧!