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

Struts 1 Java Discussion :

validation d'un formulaire indexé


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Par défaut validation d'un formulaire indexé
    Bonjour,
    J'ai fait des recherches et je me suis aidé de cette discussion en particulier: http://www.developpez.net/forums/sho...d.php?t=353992, mais je ne trouve pas la solution à mon problème...

    J'essaie de valider un formulaire indexé (13 lignes identiques) mais il ne se passe rien à la validation, la page se réaffiche simplement. Dans le javascript généré, j'ai vu que cette fonction était vide, qui ne me semble pas normal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function saisieForm_required () { 
    }
    Quelqu'un peut-il m'aider? Merci d'avance.
    Voici des extraits de mon code.
    Dans validation.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form name="saisieForm">
    	<field property="motif" indexedListProperty="lignes" depends="required">
    		<arg key="saisieForm.motif" />
    	</field>
    </form>
    Dans la jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <html:form action="/valideSaisie" onsubmit="return validateSaisieForm(this);">
    	[...]
    	<logic:iterate name="saisieForm" property="lignes" id="ligneDecompte">
    		<html:text name="ligneDecompte" property="motif" indexed="true"/>
    		<html:text name="ligneDecompte" property="acte" indexed="true"/>
    		<br/>
    	</logic:iterate>
    	[...]
    </html:form>
    Dans struts-config.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <action path="/valideSaisie" name="saisieForm" scope="session"
    	type="fr.irpauto.ipsa.saisiedecomptes.web.action.SaisieAction"
    	validate="false">
    	<forward name="valideSaisie" path="/jsp/saisie.jsp" />
    </action>

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Il me semble que la validation sur les propriétés indexées via le Validator fonctionne seulement côté serveur.

    Peux-tu faire un test en enlevant l'attribut onsubmit du tag html:form et en mettant validate="true" dans le mapping de l'Action SaisieAction ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Par défaut
    Quand je mets validate="true" dans le mapping de l'Action SaisieAction, j'obtiens cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.lang.NullPointerException
    	org.apache.commons.validator.Field.getIndexedProperty(Field.java:796)

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Peux-tu montrer le code de l'ActionForm ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Par défaut
    Voici l'ActionForm:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    public class SaisieForm extends ValidatorForm {
     
    	private static final long serialVersionUID = 1L;
     
    	private String numeroSS = null;
     
    	public String getNumeroSS() {
    		return numeroSS;
    	}
     
    	public void setNumeroSS(String numeroSS) {
    		this.numeroSS = numeroSS;
    	}
     
    	private List<LigneDecompte> lignes;
     
    	public List<LigneDecompte> getLignes() {
    		return lignes;
    	}
     
    	public void setLignes(List<LigneDecompte> lignes) {
    		this.lignes = lignes;
    	}
     
    	public LigneDecompte getLigneDecompte(int i) {
    		return (LigneDecompte)this.lignes.get(i);
    	}
     
    	public void setLigneDecompte(int i, LigneDecompte ligneDecompte) {
    		this.lignes.set(i, ligneDecompte);
    	}
     
    }
    J'ai trouvé cette discussion: http://www.developpez.net/forums/showthread.php?t=90055, où les personnes disent aussi que c'est impossible. Il vaut peut-être mieux que j'utilise la méthode validate dans l'ActionForm?

  6. #6
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par khilik
    Quand je mets validate="true" dans le mapping de l'Action SaisieAction, j'obtiens cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.lang.NullPointerException
    	org.apache.commons.validator.Field.getIndexedProperty(Field.java:796)
    Je pense savoir pourquoi tu as ce message d'erreur.
    Si je me souviens bien ce que tu as fait dans une précédente discussion, la première fois que tu charges la page, tu n'as pas encore constitué la collection lignes.
    Il ne peut donc pas faire la validation sur la collection étant donné que celle-ci n'existe pas encore, ce qui explique le NullPointerException.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 28
    Par défaut
    Je regarde de ce côté, tu as sûrement raison, mais j'ai du mal à voir à quel endroit il faut constituer la collection.

  8. #8
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Dans ton cas, la solution serait peut-être de mettre validate à false dans le mapping de l'Action et de faire appel à la validation dans l'Action au moment voulu via ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	ActionMessages errors = form.validate(mapping,request);
    	if ( !errors.isEmpty() )
    	{
    		saveErrors(request,errors);
    		return mapping.getInputForward() ;
    	}
    Sinon, dans l'ActionForm, il serait bien aussi de déclarer la collection lignes comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	private List<LigneDecompte> lignes = new ArrayList();
    Si tu ne t'en sors pas, montre-moi le code de ton Action.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/06/2009, 15h50
  2. Réponses: 4
    Dernier message: 19/01/2006, 16h24
  3. Ouvrir une popup lors de la validation d'un formulaire
    Par pod1978 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/11/2005, 15h47
  4. Vérification de validation d'un formulaire
    Par tom06440 dans le forum Langage
    Réponses: 8
    Dernier message: 21/09/2005, 14h29
  5. Réponses: 11
    Dernier message: 16/09/2004, 11h39

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