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 :

Validation formulaire


Sujet :

JSF Java

  1. #1
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut Validation formulaire
    Bonjour tout le monde,
    J'ai mit en place un formulaire avec champs de saisie, selectOneMenu etc
    le formulaire marche tres bien a la base, cependant, depuis que j'ai rajouté un a4j:support sur le bouton du formulaire j'ai droit a un message me disant que mes listItems sont vide
    Pour la validation du formulaire, j'ai mit ce dernier entre les balises <a4j:region>

    J'ai deja eut ce message d'erreur auparavant, message que j'avais corrigé en changeant le scope de mon backingbean, mais la rien a faire

    Voici le message en question

    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
    ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
    java.util.NoSuchElementException
    	at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:98)
    	at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:124)
    	at javax.faces.component.UISelectOne.matchValue(UISelectOne.java:141)
    	at javax.faces.component.UISelectOne.validateValue(UISelectOne.java:114)
    	at javax.faces.component.UIInput.validate(UIInput.java:645)
    	at javax.faces.component.UIInput.executeValidate(UIInput.java:849)
    	at javax.faces.component.UIInput.processValidators(UIInput.java:412)
    	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
    	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
    	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
    	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
    	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
    	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
    	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
    	at javax.faces.component.UIForm.processValidators(UIForm.java:170)
    	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
    	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
    	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
    	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
    	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:342)
    	at org.ajax4jsf.framework.ajax.AjaxViewRoot.access$201(AjaxViewRoot.java:53)
    	at org.ajax4jsf.framework.ajax.AjaxViewRoot$3.invokeRoot(AjaxViewRoot.java:302)
    	at org.ajax4jsf.framework.ajax.JsfOneOneInvoker.invokeOnRegionOrRoot(JsfOneOneInvoker.java:54)
    	at org.ajax4jsf.framework.ajax.AjaxContext.invokeOnRegionOrRoot(AjaxContext.java:176)
    	at org.ajax4jsf.framework.ajax.AjaxViewRoot.processValidators(AjaxViewRoot.java:315)
    	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:78)
    	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
    	at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
    	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
    	at java.lang.Thread.run(Unknown Source)

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Bonjour,

    Pourrait-on voir le code de ton JSF ?

    Autre chose, tu dis avoir mis un <a4j:support> sur un bouton ? Quel est l'intérêt d'une telle chose ?
    Autant utiliser directement le <a4j:commandButton/> !
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    salut,
    effectivement j'aurais pu mettre <a4j:commandButton/>

    le code est en 2 parties :

    page principale
    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <html xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:c="http://java.sun.com/jsp/jstl/core"
    	xmlns:fn="http://java.sun.com/jsp/jstl/functions"
    	xmlns:ui="http://java.sun.com/jsf/facelets"
    	xmlns:a4j="https://ajax4jsf.dev.java.net/ajax"
    	xmlns:c4f="http://faces.cgssm.org">
    <ui:composition template="/templates/layout.xhtml">
     
    	<ui:define name="titre">
    		<h:outputText value="Accueil > Création d'une demande" />
    	</ui:define>
    	// ==============================================================================
    	// Zone de présentation des informations d'une demande : Infos demande
    	// ==============================================================================
    	<ui:define name="body">
    	<a4j:region id="valideForm">
    		<h:form id="demandeForm" enctype="multipart/form-data">
    			<c4f:panelTab id="demandeNewPanel" switchType="client">
    				<h:panelGrid columns="1" styleClass="infos"
    					columnClasses="action-right">
    					<h:column>
    						<h:commandButton id="save" value="Enregistrer" type="submit"
    							styleClass="button" tabindex="1">
    							<a4j:support id="test1" event="onclick"
    							actionListener="#{demandeEnregistrementController.valideDemande}"
    							status="layoutStatus" />
    						</h:commandButton>
    						<h:commandButton id="cancel" value="Annuler" styleClass="button" 
    							immediate="true" action="#{demandeEnregistrementController.cancel}" />
    					</h:column>
    				</h:panelGrid>
    				<c4f:panelTabItem id="infosTab" label="Nouvelle demande">
    					<ui:include src="/inc/demande_infos.xhtml">
    						<ui:param name="creation" value="true" />
    						<ui:param name="beanController" 
    							value="#{demandeEnregistrementController}" />
    					</ui:include>
    				</c4f:panelTabItem>	
    			</c4f:panelTab>
    		</h:form>
    	</a4j:region>
    	</ui:define>
    </ui:composition>
    </html>
    page : demande_infos.xhtml

    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
     
     
    ...........................
    <h:column>
    					<fieldset style="width:98%"><legend>Destinataire</legend>
    					<a4j:outputPanel id="intervenantOPanel">
    						<h:panelGrid columns="2" styleClass="infos" cellspacing="0"
    							cellpadding="0" columnClasses="label,input"
    							style="margin-top: 5px">
    							<h:outputText value=" Groupe :" />
    							<h:panelGroup>
    								<a4j:region>
    									<h:selectOneMenu id="uniteTravrail" styleClass="SELECT"
    										onfocus="onFocus(this);" onblur="onBlur(this);"
    										required="true" tabindex="18"
    										value="#{beanController.idunitetravail}">
    										<f:selectItem itemLabel="-- Sélectionnez une Unité de Travail --"
    											itemValue="" />
    										<f:selectItems value="#{referenceDataBean.unitetravailItems}" />
    										<a4j:support id="evenement" event="onchange"
    											actionListener="#{beanController.changeUniteTravail}"
    											reRender="ressource" status="layoutStatus" />
    									</h:selectOneMenu>
    									<h:graphicImage alt="Champ obligatoire"	url="/images/i-alert.gif" styleClass="image" />
    										<h:message for="uniteTravail" styleClass="text-error" />
    								</a4j:region>
    							</h:panelGroup>
    							<h:outputText value=" Intervenants :" />
    							<h:panelGroup>
    								<h:selectOneMenu id="ressource" styleClass="SELECT"
    										onfocus="onFocus(this);" onblur="onBlur(this);"
    										tabindex="18"
    										value="#{beanController.demande.intervenant.idressource}">
    										<f:selectItem itemLabel="-- Sélectionnez un intervenant --"
    											itemValue="" />
    										<f:selectItems value="#{beanController.ressourceDemandeItems}" />
    									</h:selectOneMenu>
    									<h:graphicImage alt="Champ obligatoire"	url="/images/i-alert.gif" styleClass="image" />									
    							</h:panelGroup>							
    						</h:panelGrid>
    .................................
    le contenu de la page est assez vaste donc je met uniquement le partie concernant les selectOneMenu

  4. #4
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    salut,
    j'ai résolue le probleme en remplaçant le bouton par un <a4j:commandButton/>
    cependant j'ai un champs de type inputFileUpload, lorsque je valide mon formulaire le fichier n'est pas chargé et je me retrouve avec la valeur "null" pour son attribut

    ps : composant d'upload de tomahawk.

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    les fileupload ne passent pas en ajax. Les règles de sécurité de javascript ne permettent pas d'envoyer un fichier autrement que par un submit utilisateur

  6. #6
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    arf
    Ok merci pour l'info

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

Discussions similaires

  1. valid formulaire + params
    Par philippe123 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 01/09/2005, 15h29
  2. Validation formulaire dynamique
    Par odelayen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/08/2005, 17h47
  3. test validation formulaire
    Par Nkubi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/06/2005, 11h22
  4. Valider Formulaire
    Par Gourouni dans le forum ASP
    Réponses: 18
    Dernier message: 06/01/2005, 15h34
  5. Pb validation formulaire
    Par cosminutza dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/12/2004, 10h35

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