我正在使用 BeanValidation(与 DropWizzard)。现在,如果表单包含用 @NotEmpty 注释的字段,但该字段为空,我将收到状态代码 500 的 InternalServer ErrorException。 我想为此记录一个 RuntimeException 并将用户转发到错误页面。
是否可以在一个地方捕获所有 ValidationException,记录它们并执行诸如转发用户之类的操作?
最佳答案
您可以为 ValidationException 构建自己的异常映射器。 Jersey 有自己的 ValidationExceptionMapper 实现,如果元素是经过验证的参数,则该实现将返回错误请求;如果返回值上发生验证,则将返回内部服务器错误。最新版本的 Dropwizard 应默认配置这些映射器。
要构建自己的异常映射器,您应该实现接口(interface) javax.ws.rs.ext.ExceptionMapper 并将其注册到 Dropwizard 的 jersey 上下文中,即environment.jersy().register(MyExceptionMapper.class)
如果您使用 Dropwizard 0.8 或更高版本
关于java - 使用 Bean 验证时防止内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33525538/