我已经为 i18n 设置了 Spring Boot 验证消息,其中包含必要的各种注释和 bean,并且例如使其全部正常工作
SomePOJO
@NotEmpty(message = "{user.lastname_required}")
private String lastName;
messages.properties
user.lastname_required=Please provide your last name
我的问题是,如果我在属性文件或 POJO 中有拼写错误,或者只是错过添加消息,则只有在运行时引发错误时才会发现。
有没有人想出一个解决方案来如何在编译过程中发现这个问题?
看来您没有动态加载有效消息。
您可以添加在公共常量类中定义的静态常量。
代码片段如下
public class ValidationMessages {
public static final String LAST_NAME_REQUIRED = "user.lastname_required";
}
// In your POJO
@NotEmpty(message = "{" + ValidationMessages.LAST_NAME_REQUIRED + "}")
private String lastName;
您可以在 setmethod 上使用 @Value 注释,将值注入静态字段
@Component
public class ValidationMessages {
public static String LAST_NAME_REQUIRED = "user.lastname_required";
// the message which behind ':' is indicate default for the injection
@Value("${user.lastname_required:last_name is required}")
public void setLastname (String message) {
LAST_NAME_REQUIRED = message;
}
}
再多说一句, 在spring中定义消息
application.properties
,将验证消息生命周期范围与spring应用程序绑定,我认为这不是产品环境中的最佳实践。当你想更改消息时,如果在不关闭模式下没有热刷新spring配置,则应该通过重新启动应用程序来刷新配置,如果频繁修改,则意味着每次修改都会重新启动应用程序。
验证消息应该是常量,而不是从任何地方动态加载