Frage

Ich arbeite auf einfache Form zu validieren Feldern wie dieser.

public class Contact {

    @NotNull
    @Max(64)
    @Size(max=64)
    private String name;

    @NotNull
    @Email
    @Size(min=4)
    private String mail;

    @NotNull
    @Size(max=300)
    private String text;


}

Ich biete Getter und Setter wintern Abhängigkeiten auf meinem Classpath also.But ich immer noch die nicht bekommen, wie einfache Form zu validieren gibt es eigentlich nicht so viel Dokumentation für das Frühjahr Hibernate Kombination.

@RequestMapping(value = "/contact", method = RequestMethod.POST)
public String add(@Valid Contact contact, BindingResult result) {
    ....
}

Können Sie es erklären oder eine Anleitung geben, außer ursprünglichen Feder 3.x Dokumentation

War es hilfreich?

Lösung

Wenn Sie die @Valid Anmerkung verwenden, um die Validierung Ihres Backing Bean auslösen. Dann ist es nicht die Hibernate Annotations es ist javax.validation.Valid von der Validierung API.

Um es laufen Sie brauchen, beide :

In meinem Fall habe ich einen benutzerdefinierten Validator (RegistrationValidator) anstelle die Formularfelder in der Backing Bean von annotieren die Validierung zu tun. Ich brauche den L18N Schlüssel des für die Fehlermeldungen zu setzen, ist der Grund, dass ich die Feder 3 MessageCodeResolver mit meinem eigenen ersetzen hatte. Das Original von Spring 3 immer versucht, Typen oder Feld hinzufügen Namen die richtigen Schlüssel zu finden, wenn es nicht in ersten Weg gefunden hat.

Ein kleines Beispiel:

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
...
import javax.validation.Valid;

@Controller
public class RegistrationController
{
    @InitBinder
    protected void initBinder(WebDataBinder binder) 
    {
        binder.setMessageCodesResolver(new MessageCodesResolver());
        binder.setValidator(new RegistrationValidator());
    }

    @RequestMapping(value="/userRegistration.html", method = RequestMethod.POST)
    public String processRegistrationForm(@Valid Registration registration, BindingResult result, HttpServletRequest request) 
{
         if(result.hasErrors())
         {
            return "registration"; // the name of the view
         }

         ...
    }
}

So hoffe, das hilft.

Btw. Wenn jemand die offizielle Homepage der Bean Validation API weiß, bitte sagen ... Thanx.

Andere Tipps

Ich weiß, dass dies ein beantwortet wird ... aber hier ist mein $ 0.02 wert sowieso :-) ich das gleiche Beispiel verwendet hatte, dass Burak bezog sich auf, und die Validierung wurde auch wird nicht automatisch aufgerufen, ... musste ich hinzufügen die <mvc:annotation-driven /> meiner Anwendungskontext Datei ... (dann wurde die Validierung ausgelöst). Stellen Sie sicher, dass Sie auch die mvc Details zum Schema Erklärung hinzufügen ... Beispiel folgt ...

<?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"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    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/util
        http://www.springframework.org/schema/util/spring-util-3.0.xsd
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/mvc
        ">

    <mvc:annotation-driven />
...
</beans>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top