Spring 3 MVC und JSR303 @Valid-Beispiel

Spring 3 MVC und JSR303 @Gültiges Beispiel

In Spring 3 können Sie "http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-annotation-driven[mvc:annotation-driven] aktivieren. ”, UmJSR303 bean validation über die Annotation@Valid zu unterstützen, falls ein JSR 303-Validator-Framework im Klassenpfad vorhanden ist.

Note
Hibernate Validator ist die Referenzimplementierung für JSR 303

In diesem Tutorial zeigen wir Ihnen, wie Sie den Hibernate-Validator über die Annotation@Validin Spring MVC integrieren, um die Bean-Validierung in einem HTML-Formular durchzuführen.

Verwendete Technologien:

  1. Spring 3.0.5.RELEASE

  2. Hibernate Validator 4.2.0.Final

  3. JDK 1.6

  4. Eclipse 3.6

  5. Maven 3

1. Projektabhängigkeiten

Der Validator für den Ruhezustand ist im öffentlichen JBoss-Repository verfügbar.

    
        
            JBoss repository
            http://repository.jboss.org/nexus/content/groups/public/
        
    

    
        3.0.5.RELEASE
    

    

        
        
            org.springframework
            spring-core
            ${spring.version}
        

        
            org.springframework
            spring-web
            ${spring.version}
        

        
            org.springframework
            spring-webmvc
            ${spring.version}
        

        
        
            org.hibernate
            hibernate-validator
            4.2.0.Final
        

    

2. JSR303-Bean-Validierung

Ein einfaches POJO, das mit der Anmerkung des Ruhezustandsprüfers versehen ist.

Note
Ausführliche Erläuterungen finden Sie inHibernate validator documentation

package com.example.common.model;

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

public class Customer {

    @NotEmpty //make sure name is not empty
    String name;

    @Range(min = 1, max = 150) //age need between 1 and 150
    int age;

    //getter and setter methods

}

3. Controller + @Valid

Damit die Validierung funktioniert, kommentieren Sie einfach das mit JSR-Annotationen versehene Modellobjekt über@Valid. Das ist alles, andere Dinge sind nur eine normale Bearbeitung von Spring MVC-Formularen.

package com.example.common.controller;

import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.example.common.model.Customer;

@Controller
@RequestMapping("/customer")
public class SignUpController {

    @RequestMapping(value = "/signup", method = RequestMethod.POST)
    public String addCustomer(@Valid Customer customer, BindingResult result) {

        if (result.hasErrors()) {
            return "SignUpForm";
        } else {
            return "Done";
        }

    }

    @RequestMapping(method = RequestMethod.GET)
    public String displayCustomerForm(ModelMap model) {

        model.addAttribute("customer", new Customer());
        return "SignUpForm";

    }

}

4. Fehlermeldung

Standardmäßig, wenn die Validierung fehlgeschlagen ist.

  1. @NotEmpty zeigt "darf nicht leer sein" an

  2. @Range zeigt an, dass zwischen 1 und 150 liegen muss.

Sie können es leicht überschreiben, erstellen Sie eine Eigenschaften mit "Schlüssel" und Nachricht. Um zu wissen, welche @annotation an welchen Schlüssel gebunden ist, debuggen Sie sie einfach und zeigen Sie den Wert in „BindingResult result“ an. Normalerweise lautet der Schlüssel „@Annotation Name.object.fieldname“.

Datei: messages.properties

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

5. mvc: annotationsgesteuert

Aktivieren Sie "mvc:annotation-driven", damit Spring MVC den JSR303-Validator über@Valid unterstützt, und binden Sie auch Ihre Eigenschaftendatei.



    

         
    

    
        
            /WEB-INF/pages/
        
        
            .jsp
        
    

        
    
        
    

6. JSP-Seiten

Letzte, normale JSP-Seite mit Spring-Form-Tag-Bibliothek.

Datei: SignUpForm.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>






    

Customer SignUp Form - JSR303 @Valid example

Customer Name :
Customer Age :

Datei: Done.jsp



    

Done

6. Demo

URL : http://localhost:8080/SpringMVC/customer - Kundenformularseite mit 2 Textfeldern für Name und Alter.

Spring MVC JSR303 demo page

URL : http://localhost:8080/SpringMVC/customer/signup - Wenn Sie das Formular nicht ausgefüllt und auf die Schaltfläche "Senden" geklickt haben, werden Ihre benutzerdefinierten Validierungsfehlermeldungen angezeigt.

Spring MVC JSR303 demo page - error message

Quellcode herunterladen

Laden Sie es herunter -SpringMVC-Bean-Validation-JSR303-Example-2.zip (9 KB)