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 :

Valeur d'une dropdown vide après appel d'une méthode d'un bean


Sujet :

JSF Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 129
    Points : 81
    Points
    81
    Par défaut Valeur d'une dropdown vide après appel d'une méthode d'un bean
    Bonsoir.

    Je rencontre un problème très étrange avec JSF (richfaces): j'affiche une dropdown à l'écran, tout marche et s'affiche très bien.
    Je met un boutton qui appele une méthode où je veux récupérer la valeur de cette dropdown et il me dit qu'elle est toujours vide. Hors elle ne l'est jamais.
    J'ai regardé le code HTML généré, la dropdown est correcte.

    On dirait vraiment que c'est lors de l'appel de la méthode qu'il remet la valeur de la dropdown à blanc.

    Mon bean est en "request" mais j'ai également essayer d'en créer un autre en "session" et mémoriser la valeur de la dropdown dans celui-ci mais rien n'y fait : la valeur reste désespérement vide.

    Le plus étrange est que sur d'autres JSP je ne rencontre pas du tout ce phénomène...

    Quelqu'un aurait il une idée sur ce que j'aurai bien pu faire de mal concernant cette dropdown?

    Merci.

    Ici bas mon code.


    Code dans ma JSP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <h:selectOneMenu id="option1" value="#{CatalogDetailBean.option1}" styleClass="dropdown" rendered="#{CatalogDetailBean.option1Active}">
    								<f:selectItems value="#{CatalogDetailBean.option1List}" />
    							</h:selectOneMenu>
     
    ...
     
    <h:commandLink action="#{CatalogDetailBean.doAddBasket}" >
    									<h:graphicImage url="../../images/cart_icon.png" style="border: none;"></h:graphicImage>
    									<h:outputText value=" #{msg.AddToBasket}"></h:outputText>
    								</h:commandLink>
    Code du bean :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public String doAddBasket(){
     
        	System.out.println("PKE doAddBasket option1="+option1+"=");
     
        	return "doAddBasket";
        }
    Dans mon faces-config (définition du bean)

    <managed-bean>
    <managed-bean-name>CatalogDetailBean</managed-bean-name>
    <managed-bean-class>com.depairon.website.priv.bean.CatalogDetailBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
    <property-name>article</property-name>
    <value>#{param.article}</value>
    </managed-property>
    </managed-bean>

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    tu n'a pas d'autres erreurs?
    es tu sur que tu fais référence à la bonne property?
    quel est le type de la valeur du selectOneMenu?

  3. #3
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    assure toi que #{CatalogDetailBean.option1List} n'est pas vide lors de la phase "apply request value" sinon la valeur sera purement et simplement refusées. Assure toi aussi que , a tout moment #{CatalogDetailBean.option1Active} soit à true, si a une quelconque phase, ca vaut zéro, le composant sautera la phase.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 129
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    1. tu n'a pas d'autres erreurs?
    2. es tu sur que tu fais référence à la bonne property?
    3. quel est le type de la valeur du selectOneMenu?
    1. Je n'ai pas d'autre erreur visible ou dans la console en tout cas. Tout fonctionne normalement jusqu'à ce que j'appelle ma méthode et que mon system out me montre que la valeur de option1 est "" (vide).

    2. J'ai vérifie je fais bien appel à la bonne property.

    3. Il s'agit d'un String.

    Citation Envoyé par tchize_ Voir le message
    assure toi que #{CatalogDetailBean.option1List} n'est pas vide lors de la phase "apply request value" sinon la valeur sera purement et simplement refusées. Assure toi aussi que , a tout moment #{CatalogDetailBean.option1Active} soit à true, si a une quelconque phase, ca vaut zéro, le composant sautera la phase.
    Excuse moi mais comment puis je m'assurer que ma liste n'est pas vide lors de la phase "apply request value" ? Je ne connais pas celà... Merci.

    J'ai enlevé les rendered (concernant option1Active dont tu demandais s'il était toujours à true) pour être sur. Et là j'ai ce message : java.util.NoSuchElementException (voir log ci-dessous). Je suppose qu'il a encore "" (vide) dans la valeur et comme la valeur vide n'est pas dans la liste de la dropdown, il n'apprécie pas.

    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    23-déc.-2008 10:29:20 com.sun.faces.lifecycle.LifecycleImpl phase
    ATTENTION: executePhase(PROCESS_VALIDATIONS 3,com.sun.faces.context.FacesContextImpl@752564) threw exception
    javax.faces.FacesException
        at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:108)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:132)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
        at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
        at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
        at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Unknown Source)
    Caused by: java.util.NoSuchElementException
        at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:119)
        at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:146)
        at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:51)
        at javax.faces.component.UISelectOne.matchValue(UISelectOne.java:165)
        at javax.faces.component.UISelectOne.validateValue(UISelectOne.java:137)
        at javax.faces.component.UIInput.validate(UIInput.java:875)
        at javax.faces.component.UIInput.executeValidate(UIInput.java:1078)
        at javax.faces.component.UIInput.processValidators(UIInput.java:670)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIForm.processValidators(UIForm.java:229)
        at org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:439)
        at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:238)
        at org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:455)
        at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
        ... 21 more
    23-déc.-2008 10:29:20 org.ajax4jsf.webapp.BaseXMLFilter doXmlFilter
    GRAVE: Exception in the filter chain
    javax.servlet.ServletException
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
        at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
        at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
        at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Unknown Source)
    Caused by: java.util.NoSuchElementException
        at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:119)
        at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:146)
        at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:51)
        at javax.faces.component.UISelectOne.matchValue(UISelectOne.java:165)
        at javax.faces.component.UISelectOne.validateValue(UISelectOne.java:137)
        at javax.faces.component.UIInput.validate(UIInput.java:875)
        at javax.faces.component.UIInput.executeValidate(UIInput.java:1078)
        at javax.faces.component.UIInput.processValidators(UIInput.java:670)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIForm.processValidators(UIForm.java:229)
        at org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:439)
        at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:238)
        at org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:455)
        at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:132)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
        ... 18 more
    23-déc.-2008 10:29:20 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet Faces Servlet a g�n�r� une exception
    java.util.NoSuchElementException
        at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:119)
        at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:146)
        at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:51)
        at javax.faces.component.UISelectOne.matchValue(UISelectOne.java:165)
        at javax.faces.component.UISelectOne.validateValue(UISelectOne.java:137)
        at javax.faces.component.UIInput.validate(UIInput.java:875)
        at javax.faces.component.UIInput.executeValidate(UIInput.java:1078)
        at javax.faces.component.UIInput.processValidators(UIInput.java:670)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
        at javax.faces.component.UIForm.processValidators(UIForm.java:229)
        at org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:439)
        at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:238)
        at org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:455)
        at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:132)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
        at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
        at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
        at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Unknown Source)
    Merci de votre intérêt pour mon problème.

  5. #5
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Citation Envoyé par ptr83 Voir le message
    Excuse moi mais comment puis je m'assurer que ma liste n'est pas vide lors de la phase "apply request value" ? Je ne connais pas celà... Merci.
    La phase apply request value (lire la documentation de JSF, ca fait partie des bases de JSF) est celle qui interviens juste après le restore view. En très gros, comme tes bean sont request scope, la valeur de #{CatalogDetailBean.option1Active} sera celle par défaut du bean. Si par défaut c'est false, alors ce sera false, le rendered dira que ton selectItem n'est pas visible, il ne décodera donc pas la valeur soumise.

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/11/2011, 15h22
  2. Rafraichir un page après appel d'une fonction
    Par friedamichelle dans le forum JSF
    Réponses: 5
    Dernier message: 23/02/2011, 16h00
  3. récupérer une variable après appel asynchrone à une jsp
    Par troussepoil dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 29/08/2008, 14h07
  4. rafraichir l'url automatique après appel d'une action
    Par sihamsisim dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/06/2008, 17h17
  5. [FPDF] Erreur après appel d'une fonction avec include
    Par orus8 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/11/2005, 10h49

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