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

JSF Java Discussion :

Problème de soumission des données d'un formulaire


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 42
    Par défaut Problème de soumission des données d'un formulaire
    Bonjour,

    J'ai un problème assez embettant. Je bosse avec JSF et dans ma JSP je dispose de 2 formulaires:
    - le 1er, un formulaire d'ajout d'article avec 3 inputText et quelques hidden
    avec un lien de validation qui appelle une action de mon bean
    - le 2eme qui est composé d'un dataTable (liste d'article) avec pour chaque ligne la possibilité d'ajouter l'article via un lien (un par article de la liste auquel je passe des parametres spécifiques a l'article) qui appelle la meme action de mon bean.

    Mon problème est le suivant: lorsque je veux cliquer sur le lien d'ajout d'article de mon 2eme formulaire, je ne passe pas dans mon action de mon bean. J'ai l'impression qu'il essaie de valider les différents input de mon 1er formulaire.


    Voici le 2nd formulaire de ma jsp qui sera certainement plus parlant qu'un discours (le 1er étant super conséquent, je m'abstiendrai de le mettre ici):
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
     
                       <h:form>
    			<h:dataTable id="finDeCaisse" var="varArticleFinDeCaisseSelec"
    				value="#{panierData.listeArticleFinDeCaisseSelec}" width="611" cellspacing="1" 
    				headerClass="PanierHeader">
     
    					<h:column>
    					<h:panelGroup>
    						<h:panelGrid id="ligne1" columns="2">
    							<h:column>
     
    									<h:graphicImage value="#{varArticleFinDeCaisseSelec.image}" width="40"
    										height="40" alt="#{varArticleFinDeCaisseSelec.libelle}"/> 
     
    							</h:column>
    							<h:column>	
     
    									<h:outputText value="#{varArticleFinDeCaisseSelec.libelle}"/>
     
    								<f:verbatim><br></f:verbatim>
    								<h:outputText value="#{varArticleFinDeCaisseSelec.reference}"/>
    							</h:column>
    						</h:panelGrid>
    						<f:verbatim><br></f:verbatim>	
    						<h:panelGrid id="ligne2" columns="2">
    							<h:column>
    								<h:outputText value="#{varArticleFinDeCaisseSelec.couleur}"/>	
    							</h:column>
    							<h:column>
    								<h:outputText value="#{varArticleFinDeCaisseSelec.taille}"/>	
    							</h:column>
    						</h:panelGrid>
    						<f:verbatim><br></f:verbatim>	
     
    						<f:verbatim><br></f:verbatim>	
    						<h:panelGrid id="ligne4" columns="3">
    							<h:column>
    								<h:outputText value="#{varArticleFinDeCaisseSelec.prix}"/>
    								<f:verbatim><br></f:verbatim>
    								<h:outputText value="#{varArticleFinDeCaisseSelec.prixBarre}"/>	
    							</h:column>
    							<h:column>
    								<h:graphicImage value="#{panierData.CMSUrl}/site/App/panier/panier.gif" width="40"
    										height="40"/>	
    							</h:column>
    							<h:column>
    								<h:commandLink id="ajoutProdFinDeCaisse"
    											action="#{panierData.ajoutPanier}"
    											>
    									<h:graphicImage
    										value="#{panierData.CMSUrl}/site/App/panier/b_ajouter.gif"
    										alt="Ajouter dans le panier"/>
    									<f:param name="flagAjoutFinDeCaisse" 
    									value="ok"/>
    									<f:param name="referenceArticle" 
    									value="#{varArticleFinDeCaisseSelec.reference}"/>
    										   <f:param name="couleurArticle"
    									value="#{varArticleFinDeCaisseSelec.couleur}"/>
    									       <f:param name="tailleArticle" 
    									value="#{varArticleFinDeCaisseSelec.taille}"/>	
    								</h:commandLink>	
    							</h:column>
    						</h:panelGrid>	
    					</h:panelGroup>	
    					</h:column>	
     
    				</h:dataTable>		
    				</h:form>
    Je suis vraiement embeté, si quelqu'un pouvait me donner la marche a suivre pour ne valider d'un et un seul formulaire et passer dans mon action de bean.
    Merci d'avance

    En revanche quand j'appuye sur mon 1er lien, ya pas de soucis ca effectue sans problèmes l'action avec les infos dans le input

  2. #2
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    Bonjour,
    La validation se fait uniquement au sein d'un même formulaire, aussi, tu ne devrais pas avoir de bloquage a ce niveau la. Je te conseilles d'ajouter un H:messages avec globalonly = false pour voir si il n'y a pas un message particulier. En suite tu peux essayer d'utiliser FacesTrace, un composant très pratique pour faire du développement jsf : il t'affiche les différentes phases du cycle de vie d'un requête JSF.

    De même, vérifies que tu n'a pas un tag verbatim qui entoure ta page. Si tu utilises tomahawk comme faces servlet prend la dernière version ca ril y a un bug javascript concernant les linkbuttons dans les promières version. En parlant de javascript tu peux aussi vérifier au passage si une errreur n'est pas levée lors du click sur le bouton.

    Tu peux aussi faire un test rapide avec immediate = true sur ton bouton, si ca ne résoud pas le problème ce n'est pas un problème de validation .

    Avec ca tu as de bonnes chance de trouver la solution du problème.

  3. #3
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 42
    Par défaut
    Citation Envoyé par heid Voir le message
    Bonjour,
    La validation se fait uniquement au sein d'un même formulaire, aussi, tu ne devrais pas avoir de bloquage a ce niveau la.
    D'accord, c'est bien ce que je me disais. Sachant que j'ai 2 formulaires avec 2 identifiants bien distincts, ca devrait marcher.

    Citation Envoyé par heid Voir le message
    Je te conseilles d'ajouter un H:messages avec globalonly = false pour voir si il n'y a pas un message particulier.
    Je ne connais pas ce composant, je ne l'ai jamais utilisé, ca ne fait que quelques mois que je connais jsf, mais je vais voir ce que ca donne.
    En tout cas en passant en débug j'ai bien ma liste d'articles qui est initialisée. Je la vois bien sur ma page, mais quand je fais l'action sur un de ces derniers, je ne passe pas dans mon action de bean. Donc quelque chose doit coincer avant mais je ne sais quoi.

    Citation Envoyé par heid Voir le message
    En suite tu peux essayer d'utiliser FacesTrace, un composant très pratique pour faire du développement jsf : il t'affiche les différentes phases du cycle de vie d'un requête JSF.
    Pour ca, ca va être compliqué, je suis un peu tributaire des choix et de l'architecture mise en place par le client et par le chef de projet. Ajouter un composant, je pense pas qu'ils seront d'accord.

    Citation Envoyé par heid Voir le message
    De même, vérifies que tu n'a pas un tag verbatim qui entoure ta page. Si tu utilises tomahawk comme faces servlet prend la dernière version ca ril y a un bug javascript concernant les linkbuttons dans les promières version. En parlant de javascript tu peux aussi vérifier au passage si une errreur n'est pas levée lors du click sur le bouton.
    Heureusement pas de Tomahawak dans cette appli
    Des verbatim isolés mais pas encadrant le code.

    Citation Envoyé par heid Voir le message
    Tu peux aussi faire un test rapide avec immediate = true sur ton bouton, si ca ne résoud pas le problème ce n'est pas un problème de validation .
    Je n'avais pas osé en me disant que ca bloquerait toute action, mais je vais voir ca de suite.

    Citation Envoyé par heid Voir le message
    Avec ca tu as de bonnes chance de trouver la solution du problème.
    Merci beaucoup, je te tiens au courant.

  4. #4
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    Pour ca, ca va être compliqué, je suis un peu tributaire des choix et de l'architecture mise en place par le client et par le chef de projet. Ajouter un composant, je pense pas qu'ils seront d'accord
    A utiliser uniquement en mode développement. C'est vraiment très très pratique.
    C'est pour moi un outil indispensable en développement JSF.

    Je n'avais pas osé en me disant que ca bloquerait toute action, mais je vais voir ca de suite.
    Ca ne bloque pas tout l'action, ca by passe la validation et le binding des composant/converters. C'est donc a utiliser dans des cas bien précis et en ayant une bonne maitrise du cycle de vie JSF (la encore faces trace est très utile). Typiquement tu l'utilise comme bouton "raz formulaire" ou "retour page précédente". Mais pas pour sauvegarder un formulaire.



    ps : non je n'ai pas d'actions dans FacesTrace

  5. #5
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 42
    Par défaut
    Bon et bien avec le immediate=true ca fait toujours pareil.

    Je ne comprends vraiment pas.
    Pour expliquer un peu plus à ceux qui nous rejoigne, mon 1er formulaire comporte 3 input (la taille, la ref et la quantité).
    Quand on clique sur le bouton d'ajout, ca appelle ajoutPanier de mon Bean.
    Dans ce cas la pas de soucis. Mon article est bien ajouté a mon panier.

    Dans mon second formulaire, j'ai une liste d'articles et pour chaque article j'ai un bouton qui appelle la meme action ajoutPanier du meme Bean que ci-dessus sauf que pour simuler le fait qu'on ait rentré une taille et une ref, je passe des param et je gere ce cas particulier dans ajoutPanier de mon bean.
    Et la ca ne fait rien du tout, ca raffraichit la page sans passer dans mon action et ca n'a bien entendu rien fait du tout.

    Au secours.

    -

  6. #6
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    Pas d'erreur javascript?

    Postes nous le contenu en entier de ta page JSF.
    Essaies de remplacer ton linkbutton par un commandbutton.

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/10/2011, 13h22
  2. Probléme d'envoie des données d'un formulaire
    Par iMano38 dans le forum Langage
    Réponses: 18
    Dernier message: 25/05/2011, 16h27
  3. Réponses: 2
    Dernier message: 11/06/2007, 23h23
  4. Réponses: 8
    Dernier message: 16/06/2006, 00h57
  5. Réponses: 6
    Dernier message: 15/02/2006, 14h02

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