我正在试图弄清楚如何在spring boot中本地化错误消息。理想的方法是将本地化的消息名称设置为错误,如下所示:
@RequestMapping
public ModelAndView index(@Valid SomeDto dto, BindingResult result) {
//...
result.addError(new FieldError("field1","messages.field1.error1"));
//...
}
//...
public class SomeDto {
@Size(min = 3, message = "messages.field.error2")
private String field1;
}
然后处理响应过滤器中的字段,或以某种方式解析百万美元模板中的消息。
答案 0 :(得分:0)
好的,我在百里香中找到了一条路:
<div th:if="${#fields.hasErrors('field1')}"
th:each="e : ${#fields.errors('field1')}" th:text="#{${e}}" >
</div>
然而,它可能不是最优雅的方式。
答案 1 :(得分:0)
“然而,它可能不是最优雅的方式。”
实际上,你非常接近“优雅的方式”。而不是:th:text="#{${e}}"
只使用th:text="${e}"
。但是,当然,这不会显示本地化的消息。要显示本地化消息,您需要在messages_en.properties
(或您的语言环境)文件中添加此消息:
Size.someDto.field1=Field has to contain at least {2} characters.
因此,模式基本上是:验证注释的名称后跟模型属性实例的名称,后跟字段名称。 {2}
代表min
注释属性值,而{1}
代表max
。它将显示“开箱即用”的本地化消息。
P.S。你不需要这一行:
result.addError(new FieldError("field1","messages.field1.error1"));