Note that there are some explanatory texts on larger screens.

plurals
  1. POSpring 3 MVC: Show validation message with custom validator
    primarykey
    data
    text
    <p>I need help. I am beginner in jsp, MVC. I want to validate form input with custom validator in Spring 3 MVC.</p> <p>My validator class </p> <pre><code> package validators; import models.UserModel; import org.springframework.stereotype.Component; import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; @Component public class UserValidator implements Validator { @Override public boolean supports(Class clazz) { return UserModel.class.isAssignableFrom(clazz); } @Override public void validate(Object target, Errors errors) { ValidationUtils.rejectIfEmptyOrWhitespace(errors, "firstname", "Enter firstname."); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "surname", "Enter surname."); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "login", "Enter login."); } } </code></pre> <p>Controller class</p> <pre><code>package controllers; import java.util.ArrayList; import models.UserModel; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import validators.UserValidator; import database.UserDB; @Controller public class UserController { @RequestMapping(value="pouzivatel/new", method=RequestMethod.POST) public ModelAndView newUser(@ModelAttribute UserModel user, BindingResult result){ UserValidator validator = new UserValidator(); validator.validate(user, result); if(result.hasErrors()){ return new ModelAndView("/user/new","command",user); } ... } </code></pre> <p>Model for User</p> <pre><code>package models; public class UserModel { private String firstname=""; private String surname=""; public String getFirstname() { return firstname; } public String getSurname() { return surname; } public void setFirstname(String firstname) { this.firstname = firstname; } public void setSurname(String surname) { this.surname = surname; } } </code></pre> <p>JSP veiw new.jsp which is in directory /web-inf/user (it just only form)</p> <pre><code>&lt;form:form method="post" action="new.html"&gt; &lt;fieldset&gt; &lt;table&gt; &lt;tr&gt; &lt;td&gt; &lt;form:label path="firstname"&gt;FirstName&lt;/form:label&gt; &lt;/td&gt; &lt;td&gt; &lt;form:input path="firstname" /&gt; &lt;form:errors path="firstname" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;form:label path="surname"&gt;Surname&lt;/form:label&gt; &lt;/td&gt; &lt;td&gt; &lt;form:input path="surname" /&gt; &lt;form:errors path="surname" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/fieldset&gt; &lt;div&gt; &lt;button type="submit" id="btOk"&gt;Ok&lt;/button&gt; &lt;/div&gt; &lt;/form:form&gt; </code></pre> <p>dispatcher servlet.xml</p> <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"&gt; &lt;context:component-scan base-package="controllers" /&gt; &lt;context:component-scan base-package="validators" /&gt; &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"&gt; &lt;property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /&gt; &lt;property name="prefix" value="/WEB-INF/jsp/" /&gt; &lt;property name="suffix" value=".jsp" /&gt; &lt;/bean&gt; &lt;/beans&gt; </code></pre> <p>Problem is a display validation message in view. Validation is successful and in variable resut (BindingResult) are errors. Controller return follow part of code</p> <pre><code>if(result.hasErrors()){ return new ModelAndView("/user/new","command",user); </code></pre> <p>Another way is use Annotation validation (I preffer custom validator), but why i can not see validation messages on view, when input fields are empty.</p> <p>Can you give me example how to do it right?</p> <p>Thanks for reply.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload