当我启动我的请求时,ConstraintViolationException不希望在合同中带有正则表达式的字段被抛出
这里是邮差中的请求
apiName/v1/account?cardNumer=55^fields=customerName
这里的合约AccountApi包含字段cardNumber
上的正则表达式
@Pattern(regexp = "^[0-9]{6}[A-Z][0-9]{9}$") @Parameter(name = "cardNumber")
这里是带有@Validated注释的Controller.java
AccountController .java实现了AccountApi,它是合约
@RestController
@Validated
@Slf4j
public class AccountController implements AccountApi {
@Override
public ResponseEntity<List<Account>> getAccount(String cardNumer) {
}
}
这里的AccountControllerExceptionHandler.java带有ConstraintViolationException
@ControllerAdvice
public class AccountControllerExceptionHandler{
@ExceptionHandler(value = {ConstraintViolationException.class})
@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST)
public Error manageErrorRegexViolation(final ConstraintViolationException e, HttpServletResponse response) {
log.error("Error ConstraintViolationException {}.", e.getMessage());
}
}
合同中字段cardNumber的正则表达式在这里
控制器中的@Validated注释在这里
ExceptionHandler.java中的ConstraintViolationException在这里
在其他线程中,他们只说添加这3个东西
mvn clean package然后在Intelij中无效缓存和maven/reimport,它工作了!