正在运行ex.getMessage()
给我:
Property 'firstname' threw exception; nested exception is javax.validation.ValidationException:
Error validating field firstname of class com.inferoquest.entity.Employee:
[ConstraintViolationImpl{interpolatedMessage='Name cannot be shorter than 2 characters',
propertyPath=firstname, rootBeanClass=class com.inferoquest.entity.Employee,
messageTemplate='Name cannot be shorter than 2 characters'}]
我想从中提取Name cannot be shorter than 2 characters
。
更新:也许我还应该补充一点,我想以干净的方式做到这一点,而不是正则表达式: - )
我已经看过this主题的主题。它的答案可能包含我的解决方案,但说实话,我认为这样一个简单的任务似乎过于复杂,老实说它不能很好地理解它使用它。
有什么想法吗?
答案 0 :(得分:3)
ConstraintViolationException
包含一组ConstraintViolations
(有关详细信息,请参阅JavaDoc)。您可以通过在捕获的异常上调用getConstraintViolations()
来获取这些违规,迭代该集并构建包含所包含违规的所有消息的消息。
答案 1 :(得分:0)
仅从这一行获取消息的最简单方法是在 catch 部分中写入:
ex.getConstraintViolations().forEach(v -> System.out.println(v.getMessage()));
搜索这个解决方案大约三个小时,至少找到了这个。
当然,如果你想做更复杂的事情,你需要别的东西。但这对于开始来说已经足够了。