2011-01-31 180 views
1

由於某些原因,我無法解析Hibernate Validator消息。我在我的applicationContext.xml如下:無法解析Hibernate Validator消息

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basenames"> 
     <list> 
      <value>properties.message</value> 
      <value>org.hibernate.validator.ValidationMessages</value> 
     </list> 
    </property> 
</bean> 

我使用<spring:message>來解決該消息的代碼。不幸的是,我得到以下異常:

javax.servlet.jsp.JspTagException: No message found under code 'org.hibernate.validator.constraints.NotBlank.message' for locale 'en_US'. 
    org.springframework.web.servlet.tags.MessageTag.doStartTagInternal(MessageTag.java:184) 
    org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) 
    org.apache.jsp.tag.web.generate_002dvalidation_tag._jspx_meth_spring_005fmessage_005f0(generate_002dvalidation_tag.java:645) 
    org.apache.jsp.tag.web.generate_002dvalidation_tag._jspx_meth_c_005fset_005f4(generate_002dvalidation_tag.java:611) 
    org.apache.jsp.tag.web.generate_002dvalidation_tag._jspx_meth_c_005fif_005f1(generate_002dvalidation_tag.java:569) 
    org.apache.jsp.tag.web.generate_002dvalidation_tag._jspx_meth_c_005fforEach_005f2(generate_002dvalidation_tag.java:505) 
    org.apache.jsp.tag.web.generate_002dvalidation_tag._jspx_meth_c_005fforEach_005f1(generate_002dvalidation_tag.java:417) 
    org.apache.jsp.tag.web.generate_002dvalidation_tag._jspx_meth_c_005fforEach_005f0(generate_002dvalidation_tag.java:328) 
    org.apache.jsp.tag.web.generate_002dvalidation_tag._jspx_meth_c_005fif_005f0(generate_002dvalidation_tag.java:197) 
    org.apache.jsp.tag.web.generate_002dvalidation_tag.doTag(generate_002dvalidation_tag.java:109) 
    org.apache.jsp.WEB_002dINF.jsp.starship.create_jsp._jspx_meth_regula_005fgenerate_002dvalidation_005f0(create_jsp.java:1027) 
    org.apache.jsp.WEB_002dINF.jsp.starship.create_jsp._jspService(create_jsp.java:598) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1063) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:801) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

當我看着裏面hibernate-validator-4.1.0-final.jar,我發現ValidationMessages.propertiesorg/hibernate/validator/下,所以我不知道爲什麼它不能夠解決的消息。

UPDATE

我複製到ValidationMessages.propertiessrc/main/webapp/WEB-INF/classes/properties修改我的applicationContext.xml

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basenames"> 
     <list> 
      <value>properties.message</value> 
      <value>properties.ValidationMessages</value> 
     </list> 
    </property> 
</bean> 

,但我得到了同樣的問題。問題與地區有關嗎?

+0

對文檔進行註釋如果要替換「/org/hibernate/validator/ValidationMessages.properties」中的那個,ValidationMessages.properties應該是「位於類路徑的根目錄」。我認爲你不需要將它添加到spring messageSource bean中。嘗試在類路徑的根目錄添加屬性文件(儘管它應該與hibernate驗證器文件中的屬性文件一起工作 - 除非jar文件沒有正確部署)。我檢查了hibernate-validator-4.1.0-final.jar,它有你正在尋找的信息。 – Javi 2011-01-31 17:36:05

+0

@Javi,我不想替換默認的。我正在嘗試使用它。奇怪的是,這曾經工作過。我不知道爲什麼它不再工作。你提到了部署jar的問題......你能詳細說明一下嗎?謝謝! – 2011-01-31 17:54:03

回答

2

Spring 3.0.x的初始版本在某些地方有點搖擺不定,而新的驗證內容特別容易出現這種情況。

我建議升級到當前版本(在編寫本文時爲3.0.5,明顯少於以前的3.0.x版本)。

您也可以通過SpringSource JIRA來查看是否有任何影響3.0.2和3.0.3的問題聽起來像您的特定問題。

相關問題