Beispiel für Spring MVC - Hibernate Validator

Das folgende Beispiel zeigt, wie Fehlerbehandlung und Validatoren in Formularen mit dem Spring Web MVC-Framework verwendet werden. Lassen Sie uns zunächst eine funktionierende Eclipse-IDE einrichten und die folgenden Schritte ausführen, um eine auf dynamischen Formularen basierende Webanwendung mit dem Spring Web Framework zu entwickeln.

Schritt Beschreibung
1 Erstellen Sie ein Projekt mit dem Namen TestWeb unter einem Paket com.tutorialspoint, wie im Kapitel Spring MVC - Hello World erläutert.
2 Erstellen Sie die Java-Klassen Student, StudentController und StudentValidator unter dem Paket com.tutorialspoint.
3 Erstellen Sie die Ansichtsdateien addStudent.jsp und result.jsp im Unterordner jsp.
4 Laden Sie die Hibernate Validator-Bibliothek Hibernate Validator herunter . Extrahieren Sie hibernate-validator-5.3.4.Final.jar und die erforderlichen Abhängigkeiten im erforderlichen Ordner der heruntergeladenen Zip-Datei. Legen Sie sie in Ihren KLASSENPFAD.
5 Erstellen Sie eine Eigenschaftendatei messages.properties im Ordner SRC.
6 Der letzte Schritt besteht darin, den Inhalt der Quell- und Konfigurationsdateien zu erstellen und die Anwendung wie unten erläutert zu exportieren.

Student.java

package com.tutorialspoint;

import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.Range;

public class Student {

   @Range(min = 1, max = 150) 
   private Integer age;
   @NotEmpty
   private String name;
   private Integer id;

   public void setAge(Integer age) {
      this.age = age;
   }
   public Integer getAge() {
      return age;
   }

   public void setName(String name) {
      this.name = name;
   }
   public String getName() {
      return name;
   }

   public void setId(Integer id) {
      this.id = id;
   }
   public Integer getId() {
      return id;
   }
}

StudentController.java

package com.tutorialspoint;

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.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class StudentController {

   @RequestMapping(value = "/addStudent", method = RequestMethod.GET)
   public ModelAndView student() {
      return new ModelAndView("addStudent", "command", new Student());
   }

   @ModelAttribute("student")
   public Student createStudentModel() {	
      return new Student();
   }

   @RequestMapping(value = "/addStudent", method = RequestMethod.POST)
   public String addStudent(@ModelAttribute("student") @Validated Student student, 
      BindingResult bindingResult, Model model) {
      if (bindingResult.hasErrors()) {
         return "addStudent";
      }
      model.addAttribute("name", student.getName());
      model.addAttribute("age", student.getAge());
      model.addAttribute("id", student.getId());

      return "result";
   }
}

messages.properties

NotEmpty.student.name = Name is required!
Range.student.age = Age value must be between 1 and 150!

Hier lautet der Schlüssel <Anmerkung>. <Objektname>. <Attribut>. Wert ist die anzuzeigende Nachricht.

TestWeb-servlet.xml

<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:context = "http://www.springframework.org/schema/context"
   xmlns:mvc = "http://www.springframework.org/schema/mvc"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   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
   http://www.springframework.org/schema/mvc
   http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

   <context:component-scan base-package = "com.tutorialspoint" />
   <mvc:annotation-driven />
   <bean class = "org.springframework.context.support.ResourceBundleMessageSource"
      id = "messageSource">
      <property name = "basename" value = "messages" />
   </bean>
   <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name = "prefix" value = "/WEB-INF/jsp/" />
      <property name = "suffix" value = ".jsp" />      
   </bean>
</beans>

Hier für die erste Servicemethode student()Wir haben ein Leerzeichen übergeben Studentobject>im ModelAndView-Objekt mit dem Namen "Befehl", da das Spring Framework ein Objekt mit dem Namen "Befehl" erwartet, wenn Sie <form: form> -Tags in Ihrer JSP-Datei verwenden. Also, wenn diestudent() Methode heißt, sie gibt zurück addStudent.jsp Aussicht.

Die zweite Servicemethode addStudent() wird gegen eine POST-Methode auf dem aufgerufen HelloWeb/addStudentURL. Sie bereiten Ihr Modellobjekt basierend auf den übermittelten Informationen vor. Schließlich wird von der Dienstmethode eine "Ergebnis" -Ansicht zurückgegeben, die zum Rendern der Datei result.jsp führt. Wenn mit dem Validator Fehler generiert werden, wird dieselbe Ansicht "addStudent" zurückgegeben. Spring fügt automatisch Fehlermeldungen von einBindingResult im Hinblick auf.

addStudent.jsp

<%@taglib uri = "http://www.springframework.org/tags/form" prefix = "form"%>
<html>
   <head>
      <title>Spring MVC Form Handling</title>
   </head>
   <style>
      .error {
         color: #ff0000;
      }

      .errorblock {
         color: #000;
         background-color: #ffEEEE;
         border: 3px solid #ff0000;
         padding: 8px;
         margin: 16px;
      }
   </style>
   <body>

      <h2>Student Information</h2>
      <form:form method = "POST" action = "/TestWeb/addStudent" commandName = "student">
      <form:errors path = "*" cssClass = "errorblock" element = "div" />
         <table>
            <tr>
               <td><form:label path = "name">Name</form:label></td>
               <td><form:input path = "name" /></td>
               <td><form:errors path = "name" cssClass = "error" /></td>
            </tr>
            <tr>
               <td><form:label path = "age">Age</form:label></td>
               <td><form:input path = "age" /></td>
               <td><form:errors path = "age" cssClass = "error" /></td>
            </tr>
            <tr>
               <td><form:label path = "id">id</form:label></td>
               <td><form:input path = "id" /></td>
               </tr>
            <tr>
               <td colspan = "2">
               <input type = "submit" value = "Submit"/>
               </td>
            </tr>
         </table>  
      </form:form>
   </body>
</html>

Hier verwenden wir das Tag <form: error /> mit path = "*", um Fehlermeldungen zu rendern. Zum Beispiel -

<form:errors path = "*" cssClass = "errorblock" element = "div" />

Es werden Fehlermeldungen für alle Eingabevalidierungen ausgegeben. Wir verwenden das Tag <form: error /> mit path = "name", um eine Fehlermeldung für das Namensfeld zu rendern.

Zum Beispiel -

<form:errors path = "name" cssClass = "error" />
<form:errors path = "age" cssClass = "error" />

Es werden Fehlermeldungen für die Validierung von Namens- und Altersfeldern ausgegeben.

result.jsp

<%@taglib uri = "http://www.springframework.org/tags/form" prefix = "form"%>
<html>
   <head>
      <title>Spring MVC Form Handling</title>
   </head>
   <body>

      <h2>Submitted Student Information</h2>
      <table>
         <tr>
            <td>Name</td>
            <td>${name}</td>
         </tr>
         <tr>
            <td>Age</td>
            <td>${age}</td>
         </tr>
         <tr>
            <td>ID</td>
            <td>${id}</td>
         </tr>
      </table>  
   </body>
</html>

Wenn Sie mit dem Erstellen der Quell- und Konfigurationsdateien fertig sind, exportieren Sie Ihre Anwendung. Klicken Sie mit der rechten Maustaste auf Ihre Anwendung und verwenden SieExport → WAR File Option und speichern Sie die HelloWeb.war Datei im Webapps-Ordner von Tomcat.

Starten Sie nun den Tomcat-Server und stellen Sie sicher, dass Sie mit einem Standardbrowser über den Ordner webapps auf andere Webseiten zugreifen können. Versuchen Sie eine URL -http://localhost:8080/TestWeb/addStudent und wir sehen den folgenden Bildschirm, wenn Sie ungültige Werte eingegeben haben.