IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Web Java Discussion :

Validation d'un objet [MVC]


Sujet :

Spring Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut Validation d'un objet
    Bonjour,

    J'essaye de valider un objet construit à partir de données en BDD.
    Cet objet est en fait une compilation d'objet formulaire posté ultérieurement.

    Je voudrais en fait valider cet objet sans le poster, l'objet étant construit au chargement de la page, et redirigé en cas d'erreur vers une page spécifique avec la liste des erreurs.
    Pour plus de facilité j'essaye d'utiliser l'implements validator (sans trop de succes pour l'instant)

    Ma question est
    Est-ce possible?
    Et comment regrouper les erreurs des différents formulaire.

  2. #2
    Membre chevronné Avatar de Drakiss
    Homme Profil pro
    Consultant MOE
    Inscrit en
    Octobre 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant MOE
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2010
    Messages : 185
    Par défaut
    Si j'ai bien compris, ça peut se résoudre par une validation de formulaires multiples.
    La question est de savoir :
    Si tu utilise la base de donnée pour initialiser les formulaires, d'après ce que j'ai compris, pourquoi tu ne fait pas une méthode dans la classe appelée avant pour valider, puis comparer aux données des différents formulaires ?
    Mais j'ai peut-être mal compris...
    Jette un coup d'oeil à ça :
    http://myfaces.apache.org/tomahawk-p...t_subform.html si jsf ne te fait pas peur.

    Sinon la partie sur les Contrôleur de gestion de formulaire semble intéressante à la page 226 par là :
    http://www.springparlapratique.org/e...pv2-chap-7.pdf

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut
    En fait ma page ne contient aucun formulaire à proprement parlée.

    Je veux juste valider un objet que je charge dans mon controller depuis la base de donnée comme si c'était un formulaire.

    Et si y a des erreurs je veux les afficher grace à la balise formulaire d'erreur de spring mvc et sinon afficher une page simple.

    Donc pour l'instant j'arrive à valider l'objet.
    Ce que je n'arrive pas à faire c'est afficher les erreurs.

    voici le code du controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    CollecteInternet vFormulaire6EForm = (CollecteInternet) getInBDD();
     
    DataBinder vResult = new DataBinder(vFormulaire6EForm, "collecteInternet");
     
    Demande6EValidator vDemandeValidator = new Demande6EValidator();
    vDemandeValidator.validate(vFormulaire6EForm, vResult.getBindingResult());
     
    		// TODO valider les champs obligatoire avant soumission
    		if (vResult.getBindingResult().hasErrors()) {
    			pModel.addAttribute("collecteInternet", vFormulaire6EForm);
    			pModel.addAttribute(vFormulaire6EForm);
    			pModel.addAttribute(vResult.getBindingResult());
    			pModel.addAttribute(vResult);
    			return ConstantesFormulaire6E.URL_COLLECTE_CHAMPS_OBLIGATOIRE;
    		}
    PS : tout les pModel c'etait pour tester mais ca n'affiche quand meme pas les erreurs dans la JSP

  4. #4
    Membre chevronné Avatar de Drakiss
    Homme Profil pro
    Consultant MOE
    Inscrit en
    Octobre 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant MOE
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2010
    Messages : 185
    Par défaut
    Bonjour, que fais-tu au niveau de la déclaration du bean Controlleur dans le servlet.xml ?
    Et est-ce que ta page jsp utilise bien la balise <form:form> pour que le Binding formulaire / objet Command soit bidirectionnel car apparement on peut avoir le contrôle complet de la validation métiers complexes en utilisant le Validator.
    (cf : ce Tutoriel-ci !).
    Je viens de trouver un bout de code d'un mec qui passe par des interceptor pour construire son binding et valider ses objets qui peut t'intéresser sur le site officiel de spring !
    Après il te reste à tester en debug/firebug ce qui se passe et pourquoi ça ne passe pas...
    N'étant pas spécialiste...
    Bon courage.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut
    Comme je le disais il n'y a pas de POST de formulaire juste l'affichage des erreurs générés par un Validator que j'utilise dans un Controller GET

    Voici ma page d'affichage JSP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <div class="espace_gauche">
    	<form:form modelAttribute="collecteInternet">
    		<div class="champ_erreur"><form:errors path="*" /></div>
    		<div class="champ_erreur"><form:errors path="chantierForm.*" /></div>
    		<div class="champ_erreur"><form:errors path="demandeurForm.*" /></div>
    		<div class="champ_erreur"><form:errors path="auForm.*" /></div>
    		<div class="champ_erreur"><form:errors path="precisionTechniqueForm.*" /></div>
    	</form:form>
    </div>

  6. #6
    Membre chevronné Avatar de Drakiss
    Homme Profil pro
    Consultant MOE
    Inscrit en
    Octobre 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant MOE
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2010
    Messages : 185
    Par défaut
    Je ne sait pas si ça vient de là, et suis en mode test, mais est-ce que tu as testé avec des input (hidden, evidement le but n'étant pas que quelqun remplisse le formulaire ?), mais ça parait idiot puisque le path est le même par contre avec commandName, et donner explicitement le nom de l'objet (vérifier les majuscules) dans le form ?
    Après avec une pirouette, tu pourrais faire un POST du formulaire au premier passage, et afficher les erreurs au second, mais c'est pas forcement joli, joli...
    Je crois qu'il te reste des tests à faire, désolé pour ce manque de réponses concrètes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/02/2015, 17h21
  2. Validation d'un objet
    Par sybaris dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/07/2008, 23h46
  3. Comment trouver la dernière date valide pour un objet
    Par DidierC dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/02/2008, 13h36
  4. Réponses: 8
    Dernier message: 22/05/2006, 09h25
  5. validation formulaire :"objet attendu" pour onSubm
    Par linou dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 15/11/2005, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo