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 :

erreur: Target Unreachable, identifier 'userMenu' resolved to null


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 40
    Points : 26
    Points
    26
    Par défaut erreur: Target Unreachable, identifier 'userMenu' resolved to null
    salut,

    j'ai une erreur en exécutant mon programme j'aimerai bien un aide de votre part.
    je voudrais créer un PanelMenu dynamique. Les panelMenuItem marche nikel: j'arrive à afficher les données. Mais leurs évennement (Action) ne fonctionnent pas.
    En cliquant sur l'un des panelMenuItem j'aurais l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    javax.el.PropertyNotFoundException: /pages/users/Customer.xhtml @76,72 binding="#{userMenu.addControls()}": Target Unreachable, identifier 'userMenu' resolved to null
            at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:95)
            at com.sun.faces.lifecycle.RestoreViewPhase.doPerComponentActions(RestoreViewPhase.java:244)
            at com.sun.faces.lifecycle.RestoreViewPhase.doPerComponentActions(RestoreViewPhase.java:249)
            at com.sun.faces.lifecycle.RestoreViewPhase.doPerComponentActions(RestoreViewPhase.java:249)
            at com.sun.faces.lifecycle.RestoreViewPhase.doPerComponentActions(RestoreViewPhase.java:249)
            at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:193)
    Alors ce que je voudrais faire c'est d'affficher dans un OutputPanel leurs charactéristiques qui est faite dans la fonction searchServiceCharacteristic

    je vous transmet le code:
    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
    public HtmlPanelMenu addControls() {
     
             FacesContext context = FacesContext.getCurrentInstance();   
             Application application = context.getApplication();
     
             panelMenu.setId("panelMenu");
             panelMenu.setStyle("width:200px");
             panelMenu.setMode("ajax");
             panelMenu.setIconExpandedGroup("disc");
             panelMenu.setIconCollapsedGroup("disc");
             panelMenu.setIconExpandedTopGroup("chevronUp");
             panelMenu.setIconGroupTopPosition("right");
             panelMenu.setIconCollapsedTopGroup("chevronDown");
             panelMenu.setIconGroupTopPosition("right");
     
             List childrenMenu = getPanelMenu().getChildren();
     
            if(authenticatedUser.getProfile().getAccessRight().equals("customer") ) {
     
                customerProducts();         
     
                 HtmlPanelMenuGroup panelMenuGroup = new HtmlPanelMenuGroup();
                 panelMenuGroup.setId("Products");
                 panelMenuGroup.setLabel("products");
                 List childrenGroup = panelMenuGroup.getChildren();
     
                 Iterator it = userProducts.iterator();
     
                 while(it.hasNext() ) {
                     Product prod = (Product) it.next();
     
                     HtmlPanelMenuItem panelMenuItem = new HtmlPanelMenuItem();
                     panelMenuItem.setId("panelMenuItem"+prod.getProductId() );
                     panelMenuItem.setLabel(prod.getName() );
                     panelMenuItem.setRendered(true);
     
     
        application.createMethodBinding("#{characteristicServiceProduct}", new class [] { ActionEvent } );
     
                     ELContext eLContext = context.getCurrentInstance().getELContext();
                     MethodExpression me = application.getExpressionFactory().createMethodExpression(eLContext,
                                                                        "#{this.searchServiceProduct(prod)}", null, new Class[]{ActionEvent.class} );
     
                     panelMenuItem.setActionExpression(me);
                     childrenGroup.add(panelMenuItem);
                     childrenMenu.add(panelMenuGroup);
                     updateOutputPanel();
                 }
          }
    return panelMenu;
    }
    public HtmlAjaxOutputPanel addOutputPanel() {
     
            outputPanel.setId("outputPanel");
            outputPanel.setAjaxRendered(true);
            outputPanel.setTitle("Products caracteristic");
            HtmlOutputText outputText = new HtmlOutputText();
            outputText.setValue("");
            outputPanel.getChildren().add(outputText);
            return outputPanel;
        }
     
        public void updateOutputPanel(){
     
            HtmlDataTable dataTable = new HtmlDataTable();
     
            UIColumn columnName, columnAmount;
     
            dataTable.setValue("#{characteristicServiceProduct}");
            dataTable.setVar("chSePr");
     
            columnName = new UIColumn();
            HtmlOutputText outputTextName = new HtmlOutputText();
            outputTextName.setValue("#{chSePr.characteristic.name}");
            columnName.getChildren().add(outputTextName);
     
            columnAmount = new UIColumn();
            HtmlOutputText outputTextAmount = new HtmlOutputText();
            outputTextAmount.setValue("#{chSePr.amount}");
            columnAmount.getChildren().add(outputTextAmount);
     
            dataTable.getChildren().add(columnName);
            dataTable.getChildren().add(columnAmount);
            outputPanel.getChildren().add(dataTable);
        }
    la page .xhtml est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <rich:panelMenu binding = "#{userMenu.addControls()}"/>
     
                   <rich:panel>
                        <a4j:outputPanel ajaxRendered="true" binding="#{userMenu.addOutputPanel()}">
                            <!--<h:outputText value="service #{userMenu.service}"/>-->
     
                        </a4j:outputPanel>
                    </rich:panel>
    merci pour tous

  2. #2
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    t'as declarer userMenu dans faces config?? quel scope?

    et en plus je croix que lorsque tu accede a une propriete tu doit utilie les accessor getAddControls()
    La connaissance est la seule chose qui s'accroit lorsqu'on la partage.

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Le scope je l'a idéclaré aprés, c'était ça le Bean est détruit dès l'affichage du menu.
    Mais l'erreur a changé mnt
    J'ai pas déclarée le managed Bean dans faces-config.xml. je les déclare plutôt dans web.xml.
    La déclaration du managed bean userMenu dans web.xml est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <ejb-local-ref>
            <ejb-ref-name>Dai/UserMenuBean/local</ejb-ref-name>
            <ejb-ref-type>Session</ejb-ref-type>
            <local>com.dai.management.action.UserMenuLocal</local>
            <ejb-link>UserMenuBean</ejb-link>
        </ejb-local-ref>
    l'erreur est mnt comme ceci:
    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
    javax.el.PropertyNotWritableException: /pages/users/Customer.xhtml @76,72 binding="#{userMenu.addControls()}": Illegal Syntax for Set Operation
            at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:98)
            at com.sun.faces.lifecycle.RestoreViewPhase.doPerComponentActions(RestoreViewPhase.java:244)
            at com.sun.faces.lifecycle.RestoreViewPhase.doPerComponentActions(RestoreViewPhase.java:249)
            at com.sun.faces.lifecycle.RestoreViewPhase.doPerComponentActions(RestoreViewPhase.java:249)
    .......
    contact1 >> 09:46:37,663 ERROR [ExceptionFilter] handling uncaught exception
    javax.servlet.ServletException: /pages/users/Customer.xhtml @76,72 binding="#{userMenu.addControls()}": Illegal Syntax for Set Operation
            at javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
            at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
    .....
    Caused by: javax.el.PropertyNotWritableException: /pages/users/Customer.xhtml @76,72 binding="#{userMenu.addControls()}": Illegal Syntax for Set Operation
            at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:98)
            at com.sun.faces.lifecycle.RestoreViewPhase.doPerComponentActions(RestoreViewPhase.java:244)
            at com.sun.faces.lifecycle.RestoreViewPhase.doPerComponentActions(RestoreViewPhase.java:249)

  4. #4
    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
    heuuu, c'est normal ces ( ) dans tes expressions? Normalement, un methodbinding ne prend pas de notation avec des parenthèses....

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    pourtant pour afficher le menu, la methode marche bien. Si j'enlève les parenthéses, l'erreur sera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     userMenu does not have the property addControls

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    607
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 607
    Points : 671
    Points
    671
    Par défaut
    Est-il trop tard pour répondre à ce fil?
    J'ai eu le problème ce soir, et je l'ai résolu.

    Souvent, il s'agit d'un attribut que l'on a utilisé ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText name="toto" value="#{monAttribut}" />
    Au lieu de: (pour JSF 2.0)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText name="toto" value="#{cc.attrs.monAttribut}" />
    Alors, on croit qu'à l'affichage cela se passe bien, et à la soumission mal.
    Mais dans les faits, à l'affichage, cela se passe déjà mal: JSF n'a jamais trouvé monAttribut et à converti tous les null qu'il en a déduit en blancs!

    Grunt.

  7. #7
    Membre du Club
    Femme Profil pro
    Débutante en dev web
    Inscrit en
    Octobre 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Débutante en dev web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 59
    Points : 51
    Points
    51
    Par défaut
    Bonjour,

    Pour grunt 2000,
    tu peux me dire ce que veut dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="#{cc.attrs.monAttribut}"
    (car ce message d'erreur me desespére)
    Merci


    Citation Envoyé par grunt2000 Voir le message
    Est-il trop tard pour répondre à ce fil?
    J'ai eu le problème ce soir, et je l'ai résolu.

    Souvent, il s'agit d'un attribut que l'on a utilisé ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText name="toto" value="#{monAttribut}" />
    Au lieu de: (pour JSF 2.0)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText name="toto" value="#{cc.attrs.monAttribut}" />
    Alors, on croit qu'à l'affichage cela se passe bien, et à la soumission mal.
    Mais dans les faits, à l'affichage, cela se passe déjà mal: JSF n'a jamais trouvé monAttribut et à converti tous les null qu'il en a déduit en blancs!

    Grunt.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par SI_BDD Voir le message
    Bonjour,

    Pour grunt 2000,
    tu peux me dire ce que veut dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="#{cc.attrs.monAttribut}"
    (car ce message d'erreur me desespére)
    Merci
    Il peut s'agir de beaucoup de chose.Mais je dirais que ça peut être:

    cc:un bean manager
    attrs:un autre bean ou une autre classe java déclarer dans cc
    monAttr:une propriété ou une methode de attrs

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/01/2015, 09h00
  2. Réponses: 0
    Dernier message: 21/11/2014, 17h00
  3. Réponses: 4
    Dernier message: 29/08/2012, 14h20
  4. Erreur "Target Unreachable, identifier 'helloWorld' resolved to null"
    Par thierryler dans le forum Frameworks Web
    Réponses: 5
    Dernier message: 30/08/2011, 11h52
  5. Réponses: 1
    Dernier message: 29/09/2010, 16h15

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