복붙노트

[SPRING] Hibernate + Spring에서 커스텀 검증 메시지를 사용하라.

SPRING

Hibernate + Spring에서 커스텀 검증 메시지를 사용하라.

나는 대답에서 단계를 시도했다 : Hibernate Validator, 커스텀 ResourceBundleLocator와 Spring

하지만 여전히 메시지 대신 {location.title.notEmpty}를 출력으로 사용합니다.

dispatcher-servlet.xml

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

<bean name="resourceBundleLocator" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>/WEB-INF/validationMessages</value>
        </list>
    </property>
</bean>

/WEB-INF/validationMessages.properties:

location.title.notEmpty=My custom message

서식 (클래스 위치)

@NotEmpty( message = "{location.title.notEmpty}" )
private String title;

여기서 뭐가 잘못 됐어?

해결법

  1. ==============================

    1.알았다! :-)

    알았다! :-)

    Dispatcher-servlet.xml에 위의 두 가지 대신 다음 bean을 추가했습니다.

      <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="/WEB-INF/validationMessages" />
      </bean>
    

    그런 다음 my validationMessages.properties에서 다음 구문을 사용했습니다.

    NotEmpty.location.title=My custom Message
    

    나는 이것이 이유라고 생각한다. Hibernate 유효성 검사 주석 (javax가 아닌)을 사용했다.

    그리고 일반적으로 메시지 파일의 구문은 다음과 같아야합니다.

    [ConstraintName].[ClassName].[FieldName]=[Message]
    

    이것이 다른 사람들을 도와 줄 수 있기를 바랍니다 .-)

    그리고 스프링 컨트롤러에서 메시지에 액세스하려면 @Autowired private MessageSource messageSource를 추가하십시오. 클래스 필드로 사용하고 messageSource.getMessage 메소드를 사용하십시오. 나는 하나의 로케일을 사용하기 때문에 messageSource.getMessage ( "NotEmpty.location.title", null, null)를 사용했다.

  2. from https://stackoverflow.com/questions/9232284/use-custom-validation-messages-in-hibernate-spring by cc-by-sa and MIT license