2012-07-20 50 views
0

资源键外观的默认行为似乎是在字段名称和约束之间添加前缀。我想修改它而不是。如何自定义弹簧MVC验证消息的资源键查找

public class MyForm { 
    @NotEmpty 
    private String name; 
} 

在我messages.properties

myForm.name=The label 
NotEmpty.myForm.name=Please enter your name 

我想用:

myForm.name=The label 
myForm.name.NotEmpty=Please enter your name 

显然,这纯粹是化妆品,但我的强迫症不能处理我的资源文件的外观。

我使用spring 3.1.2与hibernate validator 4.3.0.Final。它自己的应用程序使用@Configuration,@EnableWebMvcWebMvcConfigurerAdapter样式配置,但我应该能够翻译任何基于xml的解决方案。

回答

1

一个简单的想法是延长DefaultMessageCodesResolver和覆盖的方法postProcessMessageCode()最初是:

protected String postProcessMessageCode(String code) { 
    return getPrefix() + code; 
} 

,并改变它,你的愿望的方式。我相信Spring会在引导时将你的类型为MessageCodesResolver的bean作为默认行为。希望这可以帮助。

Spring 3.1+中,现在您可以通过<mvc:annotation-driven />配置一个消息代码解析器。看来对Java API的支持将出现在3.2中。

+1

你已经给我足够的了......实际的解决方案需要重新实现DefaultMessageCodesResolver,我用我的工作解决方案创建了一个主要的https://gist.github.com/3150779。 – 2012-07-20 13:47:59