java - 在 Spring 中动态设置 Java bean 验证消息

标签 java spring spring-boot

我有一个 bean 定义如下:

public class PostDTO {
    @Autowired
    private Messages messages;  

    private String id;

    @Size(min = Constant.POST_TITLE_MIN_LEN, max = Constant.POST_TITLE_MAX_LEN, message = messages.get("post.err.title"))
    private String title;
}

我想要message值根据区域设置是动态的。上面的代码显示The value for annotation attribute Size.message must be a constant expression错误。

最佳答案

我认为你可以使用 SpEL(Spring 表达式语言)


public class PostDTO {

    private String id;

    @Size(min = Constant.POST_TITLE_MIN_LEN, max = Constant.POST_TITLE_MAX_LEN, message = "#{'${post.err.title}'}")
    private String title;
}

并在 spring 属性文件中定义变量,如下所示: post.err.title = “发布错误”

SpEL 的更多详细信息:https://docs.spring.io/spring/docs/4.3.10.RELEASE/spring-framework-reference/html/expressions.html

关于java - 在 Spring 中动态设置 Java bean 验证消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58195049/

相关文章:

java - Log4J RollingFileAppender 不强制执行最大日志大小

java - GSON - 如何解析两个名称相同但参数不同的 JSONArray?

jackson - 无法在 Spring Boot 应用程序中注入(inject)多个 ObjectMapper bean

java - 为什么我的 SpringLayout 与示例不同?

java - Springboot2和oauth

java - Spring-Data:具有 Java 配置的未知实体

java - java中列表值获取修改

spring-boot - 如何使用 @RabbitListener 停止和重新启动来自 RabbitMQ 的消费消息

java - 使用 Maven 将 Spring 框架应用程序打包到 war

java - 处理异常情况下的 Http 请求