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 :

Probème avec le value binding


Sujet :

JSF Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 3
    Par défaut Probème avec le value binding
    Bonjour,

    Je suis nouveau en JSF et rencontre des difficultés avec le value binding et l'IOC.
    Plus précisément, je tente actuellement d'imbriquer 2 datatables comme indiquées dans ce post [URL="http://forum.java.sun.com/thread.jspa?threadID=5119514&messageID=9938606"]

    Voilà le fragment de la page web correspondant :

    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
    <h:dataTable id="gElemsTable" value="#{SMABean.gElems}" var="gElem" rendered="false">
      <h:column>	
        <s:fieldset id="gElemFieldset" legend="Generic Element">
          <h:panelGroup>
            <h:outputLabel for="gElemDescr">
              <h:outputText value="description : "/>
              <h:outputText id="gElemDescr" value="#{gElem.descr}"/>
            </h:outputLabel>
          </h:panelGroup>
          <t:div>
            <h:dataTable id="gElemPrtiesTable" value="#{gElem.prties}" var="ptry">
              <h:column>							
                <h:outputLabel for="prtySpec">
                  <h:outputText value="#{ptry.id}" />
                  </h:outputLabel>
                  <h:form id="submitSpec">
                    <t:selectOneMenu id="prtySpec" value="#{ptry.selectedValue}">
                      <f:selectItems value="#{prty.domain}" />
                    </t:selectOneMenu>
                    <h:commandButton value="Select" action="#{SMABean.submitSpec}" />
                  </h:form>
              </h:column>
            </h:dataTable>
          </t:div>
        </s:fieldset>
      </h:column>
    </h:dataTable>
    Mon problème se situe au niveau des composants selectOneMenu de la table imbriquée. Quand j'essaye d'afficher la page je reçois l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    java.lang.IllegalArgumentException: Value binding '#{prty.domain}'of UISelectItems with component-path {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /pages/web_gui.jsp][Class: javax.faces.component.html.HtmlDataTable,Id: gElemPrtiesTable][Class: javax.faces.component.UIColumn,Id: _idJsp8][Class: org.apache.myfaces.component.html.ext.HtmlSelectOneMenu,Id: prtySpec][Class: javax.faces.component.UISelectItems,Id: _idJsp9]} does not reference an Object of type SelectItem, SelectItem[], Collection or Map but of type : null
    	at org.apache.myfaces.shared_tomahawk.util.SelectItemsIterator.hasNext(SelectItemsIterator.java:144)
    	at org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.internalGetSelectItemList(RendererUtils.java:450)
    	at org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getSelectItemList(RendererUtils.java:428)
            ...
    J'ai un backing bean SMACfgtorBean pour gérer la vue qui englobe une liste d'objets GElem qui englobent eux mêmes les éléments SelectItems du composant selectOneMenu.
    Voici le code concernant la gestion du composant 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
    public class SMACfgtorBean {
       ...
       private List<GElem> gElems;
       ...
       public List<GElem> getgElems() {	return gElems;	}
       ...
    }
     
    public class GElem {
      ...
      private List<VarProperty> prties;
      ...
      public GElem(){
        super();
        prties = new ArrayList<VarProperty>();
      }
      ...
      public List<VarProperty> getPrties() {	return prties;	}
      public void setPrties(List<VarProperty> somePrties)	{	this.prties = somePrties;	}
      ...
    }
     
    public class VarProperty {
      ...
      private List<SelectItem> domain;
      private String selectedValue;
      ...
      public VarProperty(){
        super();
        domain = new ArrayList<SelectItem>();
      }
     
      public String getSelectedValue() { return selectedValue; }
      public void setSelectedValue(String selectedItem){	this.selectedValue = selectedItem;	}
     
      public List<SelectItem> getDomain() {	return domain;	}
      public void setDomain(List<SelectItem> selectItems){ this.domain = selectItems; }
    }
    Les objets GElem et VarProperty sont crées et initialisés par le backing bean SMACfgtorBean mais la notion de backing bean et d'objets imbriqués étant encore confus pour moi, l'erreur vient peut être d'ici ?
    Ce qui est plutôt curieux est que dans les objets VarProperty j'ai d'autres propriétés non représentées dans le code tel qu'un id que j'arrive bien à afficher par le même mécanisme.

    Voilà le mon fichier faces-config.xml correspondant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    faces-config>
    <managed-bean>
    <managed-bean-name>SMABean</managed-bean-name>
    <managed-bean-class>cfgtor_web_app.SMACfgtorBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    </faces-config>
    Qu'en pensez-vous ?

    Merci d'avance
    Nico

  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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private List<SelectItem> domain = new ArrayList<SelectItem>();
    ta liste domain est null..qd est ce que tu la remplie..?

Discussions similaires

  1. Probème avec une calculatrice (débutant)
    Par cirtey dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 23/04/2007, 22h44
  2. Probème avec FireFox
    Par Krubi dans le forum Général Conception Web
    Réponses: 8
    Dernier message: 20/06/2006, 16h27
  3. Réponses: 2
    Dernier message: 20/06/2006, 09h15
  4. [VBA] repagination de word 2003 avec checkbox.value
    Par m_benoist dans le forum VBA Word
    Réponses: 2
    Dernier message: 25/01/2006, 18h25
  5. Problème Cast avec NULL values
    Par WwiloO dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/10/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