我已经阅读了一些关于如何自定义处理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"
}
我怎样才能做到这一点?
使用自定义处理程序,当验证引发约束冲突异常时(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批注的消息: 并按预期打印 我想要的是消息还包括验证失败的变量(和类)的名称以及失败的变量的值。所以更像。 任何帮助将不胜感激。