java - 使用 Bean 验证时防止内部服务器错误

标签 java validation bean-validation dropwizard

我正在使用 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/

相关文章:

java - LocalDate 字段验证不适用于 DTO

java - 在将 XML 解码为对象时,EclipseLink MOXy 是否能够应用 JSR-303 Bean 验证?

Java @interface.List 组在自定义约束注释中不起作用

java - Intellij scala项目不支持swing

java - Spring Boot 不在 Tomcat 实例中启动

asp.net - 使用 MVC 库在 ASP.NET Web 窗体中进行基于属性的验证?

ruby-on-rails - 由于关联模型的验证,Rspec 应该对 ActiveRecord 模型进行匹配器测试失败

java - JSR 303 验证,如果一个字段等于 "something",那么这些其他字段不应为空

java - 如果应用程序不存在,在java spring应用程序中使用什么来自动创建数据库或新表?

java - Eclipse 上有关 sun/misc/BASE64Encoder 的错误