Spring Boot 验证消息在编译期间解析

问题描述 投票:0回答:1

我已经为 i18n 设置了 Spring Boot 验证消息,其中包含必要的各种注释和 bean,并且例如使其全部正常工作

SomePOJO

@NotEmpty(message = "{user.lastname_required}")
private String lastName;

messages.properties

user.lastname_required=Please provide your last name

我的问题是,如果我在属性文件或 POJO 中有拼写错误,或者只是错过添加消息,则只有在运行时引发错误时才会发现。

有没有人想出一个解决方案来如何在编译过程中发现这个问题?

java spring spring-boot internationalization thymeleaf
1个回答
0
投票

看来您没有动态加载有效消息。

您可以添加在公共常量类中定义的静态常量。

代码片段如下

步骤1。创建常量类


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;

步骤 2.从应用程序加载消息

您可以在 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配置,则应该通过重新启动应用程序来刷新配置,如果频繁修改,则意味着每次修改都会重新启动应用程序。

验证消息应该是常量,而不是从任何地方动态加载

© www.soinside.com 2019 - 2024. All rights reserved.