2012-07-20 45 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