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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    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()

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

  5. #5
    Membre averti
    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
    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 très actif

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 608
    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.

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