我想使用${validatedvalue}获取验证消息中的无效值。但我有个例外。
例外
java.lang.NumberFormatException: For input string: "validatedValue"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
java.lang.Integer.parseInt(Integer.java:580)
java.lang.Integer.parseInt(Integer.java:615)
java.text.MessageFormat.makeFormat(MessageFormat.java:1427)
java.text.MessageFormat.applyPattern(MessageFormat.java:479)
java.text.MessageFormat.<init>(MessageFormat.java:380)
org.springframework.context.support.MessageSourceSupport.createMessageFormat(MessageSourceSupport.java:159)
org.springframework.context.support.ResourceBundleMessageSource.getMessageFormat(ResourceBundleMessageSource.java:352)
org.springframework.context.support.ResourceBundleMessageSource.resolveCode(ResourceBundleMessageSource.java:175)
org.springframework.context.support.AbstractMessageSource.getMessageInternal(AbstractMessageSource.java:224)
org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:169)
org.springframework.context.support.DelegatingMessageSource.getMessage(DelegatingMessageSource.java:83)
org.springframework.context.support.AbstractApplicationContext.getMessage(AbstractApplicationContext.java:1320)
org.springframework.web.servlet.support.RequestContext.getMessage(RequestContext.java:725)
org.springframework.web.servlet.support.BindStatus.initErrorMessages(BindStatus.java:308)
org.springframework.web.servlet.support.BindStatus.getErrorMessages(BindStatus.java:278)
org.springframework.web.servlet.tags.form.ErrorsTag.exposeAttributes(ErrorsTag.java:321)
org.springframework.web.servlet.tags.form.AbstractHtmlElementBodyTag.writeTagContent(AbstractHtmlElementBodyTag.java:53)
org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:87)
org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:83)
org.apache.jsp.WEB_002dINF.jsp.basic.validation_005fand_005ferror_jsp._jspService(validation_005fand_005ferror_jsp.java:215)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:171)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:316)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1373)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1118)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1057)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:94)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
我在java对象中使用这样的验证注解。
@DateTimeFormat(pattern = "yyyy:MM:dd")
protected Date birthday;
validation\u err\u message.properties中的消息定义如下。
typeMismatch.birthday=input value of birthday is not valid. ({0}: ${validatedValue} ).
@Override
@Bean("messageSource")
public MessageSource messageSource() {
final ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource();
resourceBundleMessageSource.setBasename("validation_err_message");
resourceBundleMessageSource.setDefaultEncoding(StandardCharsets.UTF_8.name());
resourceBundleMessageSource.setDefaultLocale(Locale.CHINA);
return resourceBundleMessageSource;
}
验证程序的定义:
@Override
public Validator getValidator() {
final OptionalValidatorFactoryBean validatorFactoryBean = new OptionalValidatorFactoryBean();
validatorFactoryBean.setProviderClass(org.hibernate.validator.HibernateValidator.class);
validatorFactoryBean.setValidationMessageSource(this.messageSource);
return validatorFactoryBean;
}
messageinterpolator将
org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator
自动地。
暂无答案!
目前还没有任何答案,快来回答吧!