2015-02-20 1 views
0

Я создал основную проверку формы весной, используя аннотации. По неизвестной причине он отображает сообщение об ошибке NotNull, указанное в классе User, перед отправкой формы. Любые идеи почему?Почему не отображается сообщение об ошибке перед отправкой формы?

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="springForm" %> 
<%@ page session="false" %> 
<html> 
<head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <title>Home</title> 
</head> 
<body> 

<springForm:form method="POST" action="#" commandName="user" > 
     <table> 
      <tr> 
       <td>UserName:</td> 
       <td><springForm:input path="userName" /></td> 
      <td><springForm:errors path="userName" /></td> 
     </tr>   
     <tr> 
      <td colspan="2"> 
       <input type="submit" name="submit" value="Save Changes" /> 
      </td> 
     </tr> 
    </table> 
</springForm:form> 
</body> 
</html> 



package com.journaldev.spring; 

import javax.validation.constraints.Max; 
import javax.validation.constraints.Min; 
import javax.validation.constraints.NotNull; 
import javax.validation.constraints.Past; 
import javax.validation.constraints.Size; 

public class User { 

    private int id; 

    @NotNull @Size(min=2, max=30) 
private String userName; 

public String getUserName() { 
    return userName; 
} 

public void setUserName(String userName) { 
    this.userName = userName; 
} 

    public User(){ 

    } 

} 





package com.journaldev.spring; 


import javax.validation.Valid; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.validation.BindingResult; 
import org.springframework.validation.annotation.Validated; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

    /** 
    * Handles requests for the application home page. 
    */ 
    @Controller 
    public class HomeController { 

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class); 

/** 
* Simply selects the home view to render by returning its name. 
*/ 
     @RequestMapping(value = "/", method = {RequestMethod.GET, RequestMethod.POST}) 
    public String home(Model model, @Valid User user, 
     BindingResult bindingResult) {     


     return "home"; 
    } 

     @RequestMapping(value = "/login", method = RequestMethod.GET) 
     public String loginPage(Locale locale, Model model) { 
     return "login"; 
     } 

     @RequestMapping(value = "/home", method = RequestMethod.POST) 
     public String login(@Validated User user, Model model) { 
     model.addAttribute("userName", user.getUserName()); 
     return "user"; 
    } 
    } 

ответ

0

У вас есть один и тот же метод для «/» для GET и POST с помощью @Valid и BindingResult. Создайте отдельный метод для GET без параметров, которые вам там не нужны.

+0

Я отделил метод, но теперь сообщение об ошибке NotNull не отображается. Отображается только сообщение об ошибке размера. –

+0

Теперь отображается сообщение об ошибке NotNull [Spring MVC, как преобразовать пустые строки формы в значения NULL] (http://www.bitspedia.com/2012/09/spring-mvc-31-how-to-convert-form- empty.html). Должно ли представление формы отображать URL-адрес действия в URL-адресе браузера для второго метода при его отправке? Например, http: // localhost: 8080/SpringCSSD/save –

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