spring引导转换默认异常

5f0d552i  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(258)

1.我要做的是设置@size验证的默认消息,如下所示

@Size(min = 8,max = 255,message = "{validation.size}")

我不想把它放在每个领域,所以我想问是否有任何方法可以设置此消息的全球翻译。。
我想翻译来自spring security的错误消息,如禁止、拒绝访问等
我已经试过在messages.properties中放置类似于这些的spring安全消息

ExceptionTranslationFilter.insufficientAuthentication=A Custom message
AbstractAccessDecisionManager.accessDenied=A Custom message

但似乎不起作用。。

bwntbbo3

bwntbbo31#

您将需要一个带有注解的类 @RestControllerAdvice . 在那里添加捕获相关异常的方法,您可以将它们转换为响应。如果你想的话,甚至可以修改http状态响应代码。

@RestControllerAdvice
@Slf4j
public class MyControllerExceptionHandling {
  @ExceptionHandler(MethodArgumentNotValidException.class)

  @ResponseStatus(BAD_REQUEST)
  public MyErrorMessageDto handleMethodArgumentNotValidException(MethodArgumentNotValidException ex) {

    return MyErrorMessageDto
        .builder()
        .cause("Bad something something")
        .build();
  }

}

查找异常,如 MethodArgumentNotValidExceptionConstraintViolationException 因为您需要根据控制器验证来处理这些(和其他)。
注意:您返回错误的json与您返回成功的json一样,都是与您的客户签订的合同,所以请使用谷歌,看看其他人做了什么(在您陷入希望自己做得更好的事情之前!)。

相关问题