【问题标题】:Spring MVC invalid Date Format error message not showingSpring MVC 无效的日期格式错误消息未显示
【发布时间】:2011-11-25 01:20:04
【问题描述】:

我在 Spring MVC 3 中的日期验证方面遇到问题

ClientForm.java

 public class ClientForm
 {
      private Date bday = new Date();

      //Getters and setters
 }

在我的控制器中

    @RequestMapping(value = "/save", method = RequestMethod.POST)
public String save(@Valid ClientForm form, BindingResult result)
{
    if(result.hasErrors())
    {
        return "client.form";
    }

    return "redirect:search";
}

messages.properties

client.search.notnumber=Search value must be a number
typeMismatch.java.util.Date = Invalid date

jsp

<form:form action="save.html" method="post" commandName="clientForm">
    <form:input path="bday" cssClass="date-pick dp-applied" />
    <form:errors path="bday" element="label" cssClass="error"/>
</form:form>

“messages.properties”中的其他验证消息工作正常 但是当我故意输入一个无效的日期(即 111/12/2011)

我收到此错误消息

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是 org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 错误 字段“bday”上的对象“clientForm”中的字段错误:拒绝值 [21/05e/2011];代码 [typeMismatch.clientForm.bday,typeMismatch.bday,typeMismatch.java.util.Date,typeMismatch];参数 [org.springframework.context.support.DefaultMessageSourceResolvable:代码 [clientForm.bday,bday];论据 [];默认消息 [bday]];默认消息 [无法将类型“java.lang.String”的属性值转换为属性“bday”所需的类型“java.util.Date”;嵌套异常是 org.springframework.core.convert.ConversionFailedException:无法将值“21/05e/2011”从“java.lang.String”类型转换为“java.util.Date”类型;嵌套异常是 java.lang.IllegalArgumentException: Invalid format: "21/05e/2011" is malformed at "e/2011"] org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:359) org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:275) org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:344) org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:272) org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:81) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 根本原因 org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 个错误 字段“bday”上的对象“clientForm”中的字段错误:拒绝值 [21/05e/2011];代码 [typeMismatch.clientForm.bday,typeMismatch.bday,typeMismatch.java.util.Date,typeMismatch];参数 [org.springframework.context.support.DefaultMessageSourceResolvable:代码 [clientForm.bday,bday];论据 [];默认消息 [bday]];默认消息 [无法将类型“java.lang.String”的属性值转换为属性“bday”所需的类型“java.util.Date”;嵌套异常是 org.springframework.core.convert.ConversionFailedException:无法将值“21/05e/2011”从“java.lang.String”类型转换为“java.util.Date”类型;嵌套异常是 java.lang.IllegalArgumentException: Invalid format: "21/05e/2011" is malformed at "e/2011"] org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:810) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:359) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:153) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:359) org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:275) org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:344) org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:272) org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:81) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

【问题讨论】:

    标签: java spring validation date spring-mvc


    【解决方案1】:

    这是一个绑定异常。你定义了一个活页夹吗?如果是,您是否注册了日期编辑?也许你应该检查那个编辑器,你可能有一个错字......日期中的“e”是从哪里来的?对我来说,这似乎是一个转换错误。

    【讨论】:

    • 我故意把'e'放在日期中,我试图让 spring 在日期验证中显示我的错误消息
    猜你喜欢
    • 2015-02-26
    • 1970-01-01
    • 2020-10-25
    • 2012-04-28
    • 2014-09-23
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多