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