【问题标题】:how to configure messages property for validation using annotations spring如何使用注释spring配置消息属性以进行验证
【发布时间】:2014-05-04 11:31:32
【问题描述】:

我正在使用spring-data-rest,我需要使用注释配置messages.properties,我在我的配置类中所做的是,

@Bean public ReloadableResourceBundleMessageSource messageSource(){
    ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource = new ReloadableResourceBundleMessageSource();
    reloadableResourceBundleMessageSource.setBasename("messages");
    return reloadableResourceBundleMessageSource;
}

并尝试访问我的 messages.property 文件中的属性,

notnull.empty=rr is required.

作为,

ValidationUtils.rejectIfEmptyOrWhitespace(arg1, "rr", "notnull.empty", "test is required.");

在我的验证类中。但是仅收到默认消息,如果我删除默认消息,则会收到 null。是否可以通过注释配置验证消息属性文件?我是新来的弹簧,所以我不能打赌。提前致谢。

【问题讨论】:

  • 尝试更改reloadableResourceBundleMessageSource.setBasename("messages");中参数的de值并使用正确的路径,类似于reloadableResourceBundleMessageSource.setBasename("/WEB-INF/messages/messages");
  • 谢谢弗兰。实际上我的项目中没有 WEB-INF 文件夹。我已经这样放置并工作了,****reloadableResourceBundleMessageSource.setBasename("classpath:/message");**。如果我们保留在类路径中意味着它不能重新加载还是什么?我是否必须考虑重新定位属性文件?
  • 我在下面创建了一个正确的答案。如果对您有帮助,请投票。问候

标签: java spring annotations spring-data-rest


【解决方案1】:

问题是它无法找到消息文件。需要为setBasename 方法提供正确的位置路径。你可以通过多种方式做到这一点,我将向你展示两种:

1.使用来自项目根目录的路径,例如:

    reloadableResourceBundleMessageSource.setBasename("/WEB-INF/messages/messages")‌​;

2.使用类路径中的路径,例如:

    reloadableResourceBundleMessageSource.setBasename("classpath:/messages/messages")‌​;

我更喜欢第一个,因为服务器用于缓存从类路径加载的文件,并且更难以捕获消息文件中的更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 2011-08-12
    • 2016-12-30
    • 1970-01-01
    • 2010-09-23
    • 2017-10-30
    • 1970-01-01
    相关资源
    最近更新 更多