Question

Je travaille sur simple formulaire pour valider les champs comme celui-ci.

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;


}

Je fournis getter et setters hiverne dépendances sur mon classpath also.But je ne comprends toujours pas la façon de valider le formulaire simple, il est en fait pas tant la documentation pour la combinaison de mise en veille prolongée printemps.

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

Pourriez-vous l'expliquer ou donner un tutoriel, à l'exception des documents 3.x ressort d 'origine

Était-ce utile?

La solution

Si vous voulez utiliser l'annotation @Valid pour déclencher la validation de votre backing bean. Ensuite, ce n'est pas l'annotation Hibernate il est javax.validation.Valid de l'API de validation.

Pour le faire, vous avez besoin en cours d'exécution deux :

Dans mon cas, j'ai utilisé un validateur personnalisé (RegistrationValidator) au lieu de annoter les champs de formulaire dans le backing bean faire la validation. Je dois régler la clé de I18N pour les messages d'erreur qui est la raison pour laquelle je devais remplacer le ressort 3 MessageCodeResolver avec moi-même. L'original du printemps 3 essaie toujours d'ajouter le nom de type ou d'un champ pour trouver la bonne clé quand il ne se trouve pas dans la première manière.

Un petit exemple:

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
         }

         ...
    }
}

Alors espérons que cette aide.

BTW. Si quelqu'un connaît le site officiel de l'API de validation Bean, s'il vous plaît dire ... Thanx.

Autres conseils

Je sais que celui-ci est répondu ... mais voici mon 0,02 $ en tout cas :-) Je l'avais utilisé le même exemple que Burak faisait référence, et la validation n'a pas non plus être invoqué automatiquement ... je devais ajouter le <mvc:annotation-driven /> à mon dossier de contexte d'application ... (puis la validation a été déclenchée). Assurez-vous également ajouter les détails mvc à la déclaration de schéma ... exemple suit ...

<?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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top