2014-01-07 1 views
1

사용자 정의 웹 플로우 Validator 클래스에서 Spring ValidationMessages 번들을 연결하는 방법은 무엇입니까? 나는 발리 구현하고 작업 : 모든 내 다른 메시지와 검증이 제대로 작동Spring Webflow Validation과 함께 ValidationMessages 번들을 사용하고 있습니까?

public void validateBusinessReferences(BusinessReferencesViewDao businessReferences, Errors errors) { 
    if (somecondition())) { 
     errors.rejectValue("name", "validation.message123", "This field is bad."); 
    } 
} 

그러나 대신 ValidationMessages.properties 파일에서 메시지, 나는 This field is bad.

의 대체 기본을 얻을 - 그냥이의 실패한 사용자 지정 유효성 검사기/사용자 지정 메시지 시나리오 어떤 종류의 Spring 구성 문제가 의심 스럽지만 분리 할 수 ​​없습니다.

답변

0

문제가 해결되었습니다. 단계가 없습니다.

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <property name="basenames"> 
     <list> 
      <value>messages</value> 
      <value>ValidationMessages</value> 
     </list> 
    </property> 
</bean> 
: 당신의 MessageSource를 귀하의 스프링 빈 응용 프로그램 컨텍스트에서 정의 메시지 속성 번들로 어디

MessageResolver messageResolver = new MessageBuilder().error().source(source).code("validation.message.property.here").defaultText(errorMessage).build(); 
messageResolver.resolveMessage(messageSource, Locale.ENGLISH); 
return messageResolver; 

을 : 프로퍼티 당신이 MessageResolver를 사용하고 그래서 같이 호출 할 필요가 번들 사용하기 위해서는

MessageResolver에 대한 문서는 here입니다.

0

제 생각에 ValidationMessages.properties은 JSR-303 스타일 주석을 사용할 때 메시지를 사용자 정의하기위한 것입니다. 여기에 사용자 정의 유효성 검사기 메서드를 사용하고 errors.rejectValue을 직접 호출하는 대신 여기에있는 값을 사용하지 않으므로 메시지를 표준 messages.properties 파일에 배치해야합니다. 웹 플로우에서이 파일은 플로우 특정 파일이며 같은 폴더에있는 플로우 정의 XML 파일과 함께 존재합니다.

+0

예, 여러 가지 방법으로 시도했습니다. 마침내 MessageResolver를 사용하여 직선화했습니다. Spring 문서는 메시지 파일이이 메시지들에 대해 "적절하다"는 점에 관해서는 명확하지 않으며 아마도 그들 중 하나에 들어갈 수도 있습니다. 필자는 두 가지를 모두 메시지 소스 빈에 넣고 메시지 소스에 대해 메시지를 확인하는 resolveMessage()를 호출하는 중요한 단계를 추가했습니다. 전에는 그렇게하지 않았습니다. (죄송합니다.) – user3120173