由于某些原因,我无法解析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.properties
org/hibernate/validator/
下,所以我不知道为什么它不能够解决的消息。
UPDATE
我复制到ValidationMessages.properties
和src/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>
,但我得到了同样的问题。问题与地区有关吗?
对文档进行注释如果要替换“/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
@Javi,我不想替换默认的。我正在尝试使用它。奇怪的是,这曾经工作过。我不知道为什么它不再工作。你提到了部署jar的问题......你能详细说明一下吗?谢谢! – 2011-01-31 17:54:03