使用BeanValidation时防止InternalServerErrror

时间:2015-11-04 15:22:08

标签: java validation bean-validation dropwizard

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

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

1 个答案:

答案 0 :(得分:1)

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

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