当前位置: 首页 > 知识库问答 >
问题:

简化javax验证符号消息的简单方法

钱德海
2023-03-14

我已经阅读了一些关于如何自定义处理API请求验证错误的答案和问题。然而,这一切似乎有点过头了。我的endpoint中有一个简单的对象:

@NotNull(message = "A target group must be provided")
@NotBlank(message = "Target group cannot be blank")
private String targetGroup;

@NotNull(message = "A target entity must be provided")
@NotBlank(message = "Target entity cannot be blank")
private String targetEntity;

@NotNull(message = "A target entity identifier must be provided")
@NotBlank(message = "Target entity identifier cannot be blank")
private String targetEntityIdentifier;

@NotNull(message = "A content must be provided")
@NotBlank(message = "Content cannot be blank")
private String content;

发送空值或空值时引发的错误是:

{
    "timestamp": "2022-02-03T15:01:43.296+00:00",
    "status": 400,
    "error": "Bad Request",
    "message": "JSON parse error: Cannot construct instance of `com.foo.notification.adapter.in.web.request.NotificationItemRequest`, problem: targetGroup: Target group cannot be blank, targetGroup: A target group must be provided; nested exception is com.fasterxml.jackson.databind.exc.ValueInstantiationException: Cannot construct instance of `com.foo.notification.adapter.in.web.request.NotificationItemRequest`, problem: targetGroup: Target group cannot be blank, targetGroup: A target group must be provided\n at [Source: (PushbackInputStream); line: 5, column: 1]",
    "path": "/notification"
}

这条信息传递给前端有点太多了。他们需要的只是“目标群体不能是空白的”。我想将上面的信息转换为以下内容:

{
    "timestamp": "2022-02-03T15:01:43.296+00:00",
    "status": 400,
    "error": "Bad Request",
    "message": "A target group must be provided",
    "path": "/notification"
}

我怎样才能做到这一点?

共有1个答案

宋朝
2023-03-14

使用自定义处理程序,当验证引发约束冲突异常时(javax.validation.ConstraintViolationException),使用自定义异常处理程序处理它,因此;您可以根据使用情况简化响应。

例如:


@ControllerAdvice
public class SampleApiExceptionHandler extends ResponseEntityExceptionHandler {
    @ExceptionHandler
    public ResponseEntity<???> handle(ConstraintViolationException ex) {
        LOGGER.error("Domain violation error", ex);
        return badRequest().body("YOUR_RESPONSE_BODY");
    }
}

 类似资料:
  • 问题内容: 下面的代码对于执行基本的必需表单验证似乎效果很好。 当该字段是脏的+无效且为 Great 时,该表单将显示红色的 Name required 消息 。 如果该字段是脏的+有效消息。 但是,对于表单中的每个字段重复此代码是很混乱的: 我希望能够以更简单的方式指定和属性。 问题答案: 一种方法是将验证表达式抽象到范围方法: 控制者

  • 本文向大家介绍thinkPHP3.1验证码的简单实现方法,包括了thinkPHP3.1验证码的简单实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了thinkPHP3.1验证码的简单实现方法。分享给大家供大家参考,具体如下: 代码中写: html中写: 就是说图片的路径就是上面php代码的访问路径,就ok 如果是图片不显示,就是ob_clean();没有写,这个方法就是去除缓存之类的

  • 本文向大家介绍asp.net简单生成验证码的方法,包括了asp.net简单生成验证码的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了asp.net简单生成验证码的方法。分享给大家供大家参考,具体如下: 1.新建一个一般处理程序 2.前台代码 希望本文所述对大家asp.net程序设计有所帮助。

  • 问题内容: Wicket具有灵活的国际化系统,该系统以多种方式支持对UI消息进行参数化。在StringResourceModel javadocs中有示例,例如: 但是我想要一个非常 简单的 东西,而找不到一个很好的例子。 在.properties文件中考虑这种UI消息: 具体来说,我不想为此目的创建模型对象(使用吸气剂替换要替换的值;如上述示例中的WeatherStation)。如果我已经在局部

  • 本文向大家介绍thinkPHP中验证码的简单实现方法,包括了thinkPHP中验证码的简单实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了thinkPHP中验证码的简单实现方法。分享给大家供大家参考,具体如下: 运行效果图如下: 1.php端生成验证码函数 生成图片的同时,传入到session中。 2.页面端 直接src中调用。 点击触发改变。 3.后台验证,对比post字段与se

  • 问题内容: 抱歉,这个问题以前是否已经解决过。如果可以,请将我链接到该文件,但到目前为止,我还没有找到满意的答案。 我一直在寻找能使我的javax验证提供的错误消息更具体的方法。 在ValidationMessages.properties文件中指定了我目前用于@Min批注的消息: 并按预期打印 我想要的是消息还包括验证失败的变量(和类)的名称以及失败的变量的值。所以更像。 任何帮助将不胜感激。