java - Spring Boot 翻译默认异常
问题描述
1. 我想要做的是像这样为@Size 验证设置默认消息
@Size(min = 8,max = 255,message = "{validation.size}")
我不想把它放在每个字段上,所以我问是否有任何方法可以设置此消息的全局翻译..
- 我想翻译来自 Spring Security 的错误消息,如 Forbidden、Access denied 等
我已经尝试在 messages.properties 中放置类似这样的 spring 安全消息
ExceptionTranslationFilter.insufficientAuthentication=A Custom message
AbstractAccessDecisionManager.accessDenied=A Custom message
但似乎没有工作..
解决方案
你需要一个用@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();
}
}
根据您的控制器验证,查找异常MethodArgumentNotValidException
和ConstraintViolationException
您需要处理这些(和其他)。
注意:您为错误返回的 JSON 与您为成功返回的 JSON 一样,与您的客户签订了一份合同,因此请使用谷歌查看其他人所做的事情(在您陷入您希望自己做得更好的事情之前! )。
推荐阅读
- python - 在循环中更改熊猫数据框中列的顺序
- android - 如何使矢量标志更小并适合图标
- c# - 从 MDI 父窗体控制 MDI 子窗体上的记录导航
- .net - SAP RFC 与 VBA 的连接 - 错误的变体类型
- php - 违反完整性约束:1048 列
- flutter - 有没有办法将 ListView 堆叠在 Container 之上,但在它之下?
- html - 如何使视频播放器适合其内容?
- reactjs - 如果类定义了接口类型,如何仅传递选择性道具
- java - 无法从 Spring Boot 可执行 jar 访问部署在其他服务器上的休息点
- python - 如何使用 pyqt4 使用 pixmap 清楚地显示我的 tif 图像