Spring 3 MVC: Validierungsnachricht mit benutzerdefiniertem Validator anzeigen

Ich brauche Hilfe. Ich bin Anfänger in jsp, MVC. Ich möchte Formulareingaben mit dem benutzerdefinierten Validator in Spring 3 MVC validieren.

Meine Validator-Klasse

   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.");

   }

}

Controller Klasse

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);

      }
      ...
}

Model für Benutzer

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;
   }

}

JSP veiw new.jsp im Verzeichnis / web-inf / user (nur Formular)

<form:form method="post" action="new.html">
            <fieldset>
               <table>
                  <tr>
                     <td>
                        <form:label path="firstname">FirstName</form:label>
                     </td>
                     <td>
                        <form:input path="firstname" />
                        <form:errors path="firstname" />
                     </td>
                  </tr>
                  <tr>
                     <td>
                        <form:label path="surname">Surname</form:label>
                     </td>
                     <td>
                        <form:input path="surname" />
                        <form:errors path="surname" />
                     </td>
                  </tr>
               </table>
            </fieldset>
            <div>
               <button type="submit" id="btOk">Ok</button>
            </div>
</form:form>

dispatcher servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<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">

   <context:component-scan base-package="controllers" />
    <context:component-scan base-package="validators" />

   <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
      <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
      <property name="prefix" value="/WEB-INF/jsp/" />
      <property name="suffix" value=".jsp" />
   </bean>

</beans>

Problem ist eine angezeigte Anzeigeüberprüfungsmeldung. Die Validierung ist erfolgreich und in Variable resut (BindingResult) sind Fehler. Controller-Rückkehr folgt einem Teil des Codes

if(result.hasErrors()){
         return new ModelAndView("/user/new","command",user);

Eine andere Möglichkeit ist die Verwendung der Annotation-Validierung (ich bevorzuge die benutzerdefinierte Validierung), aber warum kann ich keine Validierungsnachrichten in der Ansicht sehen, wenn die Eingabefelder leer sind.

Können Sie mir ein Beispiel geben, wie es richtig gemacht wird?

Danke für die Antwort

Antworten auf die Frage(2)

Ihre Antwort auf die Frage