1

我正在尝试创建一个自定义验证器并将其映射到特定的 constraintViolationException。原因是我想为不同的约束创建不同的自定义异常。例如,如果在数据库中没有找到用户,则会触发 not found 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 验证器是否支持多个约束异常映射器。

4

1 回答 1

2

异常映射器是 JAX-RS 的概念,而不是 Bean Validation。您应该为其创建一个异常映射器,ConstraintViolationException并让它根据给定违规异常中包含的违规创建不同的响应。例如,您可以通过`ConstraintViolation.getConstraintDescriptor().getAnnotation().annotationType() 检查违反的约束类型。

于 2013-11-29T18:47:11.700 回答