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:
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:
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:
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