2015-11-04 59 views
0

我正在使用BeanValidation(与DropWizzard)。现在如果一个表单包含一个用@NotEmpty注解的字段,但是是空的,那么我将得到一个带有状态码500的InternalServer ErrorException。 我想为此记录一个RuntimeException并将用户转发到错误页面。使用BeanValidation时防止InternalServerErrror

是否有可能在一个地方捕获所有ValidationException,记录它们并执行类似转发用户的操作?

回答

1

您可以为ValidationException构建自己的异常映射器。 Jersey有自己的ValidationExceptionMapMapper实现,如果元素是验证的参数,则返回错误的请求,如果验证发生在返回值上,则返回内部服务器错误。最新版本的Dropwizard应该默认配置这些映射器。

要建立自己的异常映射你应该实现的接口javax.ws.rs.ext.ExceptionMapper,如果你使用Dropwizard 0.8注册它在Dropwizard即environment.jersy().register(MyExceptionMapper.class)的球衣上下文或更高版本