2011-05-04 4 views
0

Je suis nouveau sur Tomcat et Spring Web. J'essaie d'utiliser les fonctionnalités de validation de formulaire de Spring en suivant this tutorial. Tout semble fonctionner correctement, sauf pour une chose ... mon formulaire ne fait aucune validation et je peux toujours accéder à la page de réussite lorsque j'envoie le formulaire, peu importe les données que je fournis.Les contraintes d'entrée de formulaire ne sont pas appliquées?

Est-ce que j'utilise correctement les contraintes? Je veux imposer que l'utilisateur remplisse son prénom et que le prénom ait au moins deux caractères.

package net.devmanuals.form; 

import javax.validation.constraints.Size; 
import org.hibernate.validator.constraints.NotEmpty; 

public class RegistrationForm { 
    @NotEmpty(message = "You surely have a name, don't you?") 
    @Size(min = 2, message = "I'm pretty sure that your name consists of more than one letter.") 
    private String firstName; 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getFirstName() { 
     return this.firstName; 
    } 
} 

Code Forme:

<form:form method="post" commandName="regform"> 
     <p><form:input path="firstName" /> <form:errors path="firstName" /></p> 
     <p><input type="submit" /></p> 
    </form:form> 

Le contrôleur:

@Controller 
@RequestMapping("/register") 
public class RegistrationController { 
    @RequestMapping(method = RequestMethod.GET) 
    public String showRegForm(Map model) { 
     RegistrationForm regForm = new RegistrationForm(); 
     model.put("regform", regForm); 
     return "regform"; 
    } 

    @RequestMapping(method = RequestMethod.POST) 
    public String validateForm(@Valid RegistrationForm regForm, BindingResult result, Map model) { 
     if (result.hasErrors()) { 
      return "regform"; 
     } 

     model.put("regform", regForm); 
     return "regsuccess"; 
    } 
} 

que j'applique les contraintes de manière incorrecte?

+0

Avez-vous '' mvc: annotation-driven /> 'dans votre configuration? – skaffman

+0

Oups. J'ai essayé de l'ajouter à mon 'Dispatcher-servlet.xml', mais je reçois cette erreur après le déploiement: * Le préfixe" mvc "pour l'élément" mvc: annotation-driven "n'est pas lié. * – Pieter

+0

ajouter des espaces de noms pour mvc dans votre config , ie xmlns: mvc = "http://www.springframework.org/schema/mvc" ..... –

Répondre

0

En plus d'ajouter <mvc:annotation-driven/> à votre config, vous devez vous assurer que le JSR-303 est sur votre classpath. De l'docs:

[AnnotationDrivenBeanDefinitionParser] ... configure le validateur si spécifié, sinon par défaut une nouvelle instance de validateur créée par le défaut LocalValidatorFactoryBean si l'API JSR-303 est présent sur le chemin de classe.

+0

Après avoir ajouté 'slf4j-api-1.6.1.jar' à ma liste de bibliothèques (j'avais déjà le Hibernate Validator), tout semble fonctionner correctement. – Pieter

Questions connexes