我正在尝试创建自定义验证程序并将其映射到特定的constraintViolationException。原因是我想为不同的约束创建不同的自定义异常。例如,如果在数据库中找不到用户,则会触发未找到的violationException,而如果用户的用户名无效,则会执行错误的响应violationException。
@Retention(RUNTIME)
@Target({ FIELD, METHOD })
@Constraint(validatedBy = UserNotValidValidator.class)
public @interface UserIsValid { ... }
映射到
public class ConstraintExceptionMapper implements
ExceptionMapper<ConstraintViolationException> {
public Response toResponse(ConstraintViolationException e) { ... }
}
更具体地说,问题是bean hibernate验证器是否支持多个约束异常映射器。
答案 0 :(得分:1)
异常映射器是JAX-RS的概念,而不是Bean Validation。您应该为ConstraintViolationException
创建一个异常映射器,并根据给定的违例异常中包含的违规情况创建不同的响应。例如。你可以通过`ConstraintViolation.getConstraintDescriptor()。getAnnotation()。annotationType()检查违反的约束类型。