2011-10-07 77 views
1

我使用Spring 3,我有下面的配置,我的applicationContext.xml:JSR-303注入到區域設置自定義的驗證

<bean id="validationMessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource" 
    p:basename="classpath:messages/validation_messages" p:defaultEncoding="UTF-8" p:cacheSeconds="3" /> 

    <bean id="globalValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> 
    <property name="validationMessageSource"> 
     <ref bean="validationMessageSource" /> 
    </property> 
    </bean> 

一切工作正常的語言環境等

不過,我是想知道是否可以將locale注入到我構建的自定義驗證程序中。我創建了一個用於驗證郵政編碼的@CheckZip註釋。但由於郵政編碼在不同國家有不同的格式,我很好奇我是否可以將當前的語言環境放入驗證程序。

回答

4

不注射,但靜態LocaleContextHolder可以幫助在這裏:

LocaleContextHolder.setLocale(locale); // set locale for your request or based on user settings e.g. inside custom interceptor 

LocaleContextHolder.getLocale(); // get locale inside your validator 

但我不知道爲什麼你需要的語言環境明確,由於具有LocaleChangeInterceptor應工作已經:

<!-- Declare the Interceptor --> 
<mvc:interceptors>  
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" 
      p:paramName="locale" /> 
</mvc:interceptors> 

<!-- Declare the Resolver --> 
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />