Bonjour,
Je suis débutant en Jsf et j'ai un problème avec mon panelMenu qui me dérrange ça fait quelques jours maintenant et j'aimerai bien un aide de quelqu'un.
J'ai créer un panelMenu, j'arrive bien à afficher les groupes et les Items. C'est en cliquant sur le panelItem, je recoie l'erreur suivante:
javax.faces.FacesException: javax.el.PropertyNotWritableException: /pages/users/Customer.xhtml @76,72 binding="#{userMenu.addControls()}": Illegal Syntax for Set Operation
D'apés le message il est claire qu'il y a un problème avec le EL expression. Mais la methodeBinding addControls() a bien marché pour afficher le menu (c'est la meme méthode qui fait tous). J'ai modifier le code mais hélas il affiche l'erreur avant qu'il accède reste du code java.
je vous transmet un peut de code de mon java bean:
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
| public HtmlPanelMenu addControls() {
FacesContext context = FacesContext.getCurrentInstance();
Application application = context.getApplication();
setPanelMenu(new HtmlPanelMenu());
getPanelMenu().setId("panelMenu");
getPanelMenu().setStyle("width:200px");
getPanelMenu().setMode("ajax");
getPanelMenu().setIconExpandedGroup("disc");
getPanelMenu().setIconCollapsedGroup("disc");
getPanelMenu().setIconExpandedTopGroup("chevronUp");
getPanelMenu().setIconGroupTopPosition("right");
getPanelMenu().setIconCollapsedTopGroup("chevronDown");
getPanelMenu().setIconGroupTopPosition("right");
List childrenMenu = getPanelMenu().getChildren();
if(authenticatedUser.getProfile().getAccessRight().equals("customer") ) {
// methode qui cherche les produit du client authentifié
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);
childrenGroup.add(panelMenuItem);
childrenMenu.add(panelMenuGroup);
//updateOutputPanel();
}
//apres c'est le code concerant les l'action des panelItems je l'ai ai désactiver et pourtant l'erreur est la même
//......
} return panelMenu; |
ici le Binding dans la page .xhtml
<rich:panelMenu binding = "#{userMenu.addControls()}"/>
j'ai ajouté le scope de mon backing bean en tant que session, le managed bean est bien déclaré dans le fichier web.xml.
si quelqu'un a un exemple décrivant l'implémentation d'un panelMenu dynamique ça me fait trés plaisir qu'il me l'envoie.
merci beaucoup et bonne weekend
Partager