Spring MVC неверное сообщение об ошибке формата даты не отображается - PullRequest
2 голосов
/ 26 сентября 2011

У меня проблемы с проверкой даты в 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 error Ошибка поля в объекте «clientForm» в поле «bday»: отклоненное значение [21 / 05e / 2011];коды [typeMismatch.clientForm.bday, typeMismatch.bday, typeMismatch.java.util.Date, typeMismatch];arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [clientForm.bday, bday];аргументы [];сообщение по умолчанию [bday]];сообщение по умолчанию [Не удалось преобразовать значение свойства типа 'java.lang.String' в требуемый тип 'java.util.Date' для свойства 'bday';вложенным исключением является org.springframework.core.convert.ConversionFailedException: невозможно преобразовать значение «21 / 05e / 2011» из типа «java.lang.String» в тип «java.util.Date»;вложенное исключение - java.lang.IllegalArgumentException: неверный формат: «21 / 05e / 2011» искажен в «e / 2011»] org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:656) org.springfrawork.web.servlet.FrameworkServlet.doPost (FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service (HttpServlet.java:637) javax.servlet.http.HttpServlet.service (HttpSapvlet) или HttpSapvlet.j.shiro.web.servlet.AbstractShiroFilter.executeChain (AbstractShiroFilter.java:359) org.apache.shiro.web.servlet.AbstractShiroFilter $ 1.call (AbstractShiroFilter.java:275) org.apache.shiro.sublojectCC(SubjectCallable.java:90) org.apache.shiro.subject.support.SubjectCallable.call (SubjectCallable.java:83) org.apache.shiro.subject.support.DelegatingSubject.execute (DelegatingSubject.java:344) org.ache.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 (DelegatingFilterProg.raf.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 error Ошибка поля в объекте 'clientForm' в поле 'bday': отклоненное значение [21 / 05e / 2011];коды [typeMismatch.clientForm.bday, typeMismatch.bday, typeMismatch.java.util.Date, typeMismatch];arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [clientForm.bday, bday];аргументы [];сообщение по умолчанию [bday]];сообщение по умолчанию [Не удалось преобразовать значение свойства типа 'java.lang.String' в требуемый тип 'java.util.Date' для свойства 'bday';вложенным исключением является org.springframework.core.convert.ConversionFailedException: невозможно преобразовать значение «21 / 05e / 2011» из типа «java.lang.String» в тип «java.util.Date»;вложенное исключение: java.lang.IllegalArgumentException: неверный формат: «21 / 05e / 2011» искажен на «e / 2011»] org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind (HandlerMethodInvoker.j:)org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments (HandlerMethodInvoker.java:359) org.springframework.web.bind.annotation.support.HandlerMethohokservlet.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)

1 Ответ

0 голосов
/ 29 сентября 2011

Это обязательное исключение. Вы определили связующее? Если да, вы зарегистрировали редактора для дат? Возможно, вам следует проверить этот редактор, у вас там может быть опечатка ... откуда взято это "е" в дате? Это похоже на ошибку конвертации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...