我正在使用Dropwizard,并希望创建一个自定义的ExceptionMapper来处理javax.validation.ConstraintViolationException
。我创建了一个客户映射器:
@Provider
public class MyExceptionMapper implements ExceptionMapper<Exception> {
public Response toResponse(Exception exception) {
return Response.status(500)
.entity(exception.getMessage())
.type(MediaType.TEXT_PLAIN)
.build();
}
}
并在我的Dropwizard应用中配置它:
@Override
public void run(HelloWorldConfiguration configuration, Environment environment) {
ServerFactory serverFactory = configuration.getServerFactory();
if (serverFactory instanceof AbstractServerFactory) {
((AbstractServerFactory) serverFactory).setRegisterDefaultExceptionMappers(false);
}
environment.jersey().register(new MyExceptionMapper());
}
当资源/控制器抛出javax.validation.ConstraintViolationException
异常时,我的自定义映射器无法处理它,而是通过org.glassfish.jersey.server.validation.internal.ValidationExceptionMapper
返回400,这不是我想要的。
是否可以覆盖/删除泽西岛的映射器?我本以为设置setRegisterDefaultExceptionMappers(false);
就可以了,但似乎没有。