2012-02-10 26 views
7

Tôi đã thử các bước từ câu trả lời ở đây: Hibernate Validator, custom ResourceBundleLocator and SpringSử dụng thông điệp xác nhận tùy chỉnh trong Hibernate + mùa xuân

Nhưng vẫn chỉ nhận được {location.title.notEmpty} như đầu ra thay vì thông điệp.

phối-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 

Mẫu (Lớp Location)

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

gì đang xảy ra sai ở đây?

+0

Tôi không biết điều này có thể gây ra sự cố đó hay không, nhưng hãy đảm bảo rằng tệp thuộc tính thư có dòng trống là dòng cuối cùng. – Ralph

+0

không phải là vấn đề, dòng trống cuối cùng là không cần thiết – dtrunk

Trả lời

13

OK! :-)

tôi thêm đậu sau thay vì nêu trên hai vào tôi dispatcher-servlet.xml:

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

Sau đó, trong validationMessages.properties của tôi, tôi sử dụng cú pháp sau:

NotEmpty.location.title=My custom Message 

Tôi đoán đây là lý do: Tôi đã sử dụng chú thích xác thực Hibernate (không phải là chú thích xác thực của Hibernate)

Và nói chung cú pháp của tệp tin thư nên xem như

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

Hope this helps một số người khác ra khỏi đó ;-)

Và để truy cập thông điệp từ một bộ điều khiển mùa xuân chỉ cần thêm @Autowired private MessageSource messageSource; như một lĩnh vực lớp học và sử dụng các phương pháp messageSource.getMessage. Bởi vì tôi chỉ sử dụng một ngôn ngữ tôi đã sử dụng messageSource.getMessage("NotEmpty.location.title", null, null)

+0

Đẹp, nhưng nó cũng hoạt động cho chú thích xác nhận Hibernate :) – darek

+0

Vâng, suy nghĩ đầu tiên của tôi là nó chỉ hoạt động cho chú thích xác nhận ngủ đông nhưng nó hoạt động cho cả hai - hibernate và javax. – dtrunk

+0

oh và thuộc tính tin nhắn là không cần thiết nữa ... – dtrunk

Các vấn đề liên quan