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:
Alors ce que je voudrais faire c'est d'affficher dans un OutputPanel leurs charactéristiques qui est faite dans la fonction searchServiceCharacteristic
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)
je vous transmet le code:
la page .xhtml est la suivante:
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); }
merci pour tous
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>
Partager