2013-09-06 3 views
1

я есть просто для того, где я положил одну строку, и им с помощью аннотаций действительного значения и он не работаетпочему мои весенние аннотаций проверки не работает

здесь мой класс:

public class Destination 
{ 
    @NotNull 
    String address; 

    public Destination(){} 

    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 
} 

здесь мой контроллер метод

@RequestMapping(value = "/search", method = RequestMethod.POST) 
public String findDestination(@ModelAttribute("destination") @Valid Destination destination, BindingResult result, RedirectAttributes redirectAttrs) { 
    if(result.hasErrors()) { 
     return "redirect:/"; 
    } 
    Location location = LocationManager.getLocation(destination.getAddress()); 
    Weather weather = WeatherManager.getWeather(location); 
    redirectAttrs.addFlashAttribute("weather", weather); 
    redirectAttrs.addFlashAttribute("location", location); 
    return "redirect:/"; 
} 

и вот моя форма в Jsp файле:

<form:form method="post" action="search" commandName="destination" class="form-horizontal"> 
    <div class="control-group"> 
     <div class="controls"> 
      <form:input path="address" placeholder="Enter destination address"/> 
      <form:errors path="address" cssclass="error"></form:errors> 
      <input type="submit" value="Search" class="btn"/> 
      </form:form> 
     </div> 
    </div> 

так что проблема в том, что оно не действительный моем входе , когда я оставил его опустошить все еще пытается получить Адресные для объекта местоположения от нулевого объекта назначения и я получаю исключение HTTP Status 500 - Request processing failed; nested exception is java.util.NoSuchElementException

exception 

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.util.NoSuchElementException 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
root cause 

java.util.NoSuchElementException 
    java.util.ArrayList$Itr.next(ArrayList.java:794) 
    com.springapp.mvc.domain.LocationManager.getLocation(LocationManager.java:52) 
    com.springapp.mvc.controller.HomeController.findDestination(HomeController.java:51) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:601) 
    org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) 
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) 
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
+1

Покажите нам трассировку стека исключений. –

+0

обновил мой вопрос с помощью трассировки стека – Vardius

+0

Я не знаю, почему валидация не происходит, но ошибка возникает, очевидно, из 'LocationManager.getLocation', поэтому покажите нам это. –

ответ

0

Пустых HTML входов когда они представлены, это пустые строки, это может быть причиной того, что ваша проверка не работает. Вы можете попробовать добавить аннотацию @Size, т. Е. @Size(min=1)

+0

ОК, он работает так, но он не отображает сообщение об ошибке . Я думал, что есть какое-то сообщение по умолчанию, которое будет отображаться или оно станет редиректором? – Vardius

+0

Я сделал 'return 'index"; 'и он работает спасибо – Vardius

Смежные вопросы