CommandLink with PanelMenu doesn't work (reRender)?
rangelp Apr 5, 2008 1:33 PMI try this code... when user click on the command link the MenuPanel will refresh it value. But it's doesn't work, the PanelMenu doesn't work refresh.
If i refresh the page (press F5 ) it shows the menu but do nothing when click in command link.
Someone can help me? Why it doesn't work?
I'm using tomcat 6.0.15, jsf 1.2, richfaces 3.1.2 SP1.
JSF code
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%> <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%> <f:view> <a4j:form> <table width="200"> <tr> <td><table width="200"> <tr> <td><a4j:commandLink value="Administrativo" action="#{panelMenu.criaMenu1}" reRender="menu"/></td> <td><a4j:commandLink value="Financeiro" action="#{panelMenu.criaMenu2}" reRender="menu"/></td> </tr> <tr> <td> <br> <br> <br> <br> <br> </td> </tr> </table> <table width="200"> <tr> <td> <rich:panelMenu id="menu" binding="#{panelMenu.menu2}" mode="ajax"/> </td> <td> </td> </tr> </table> </td> </tr> </table> </a4j:form> </f:view>
JAVA code
package com.agriness.sandboxjsf.presentation.web.jsf; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import org.richfaces.component.UIPanelMenuItem; import org.richfaces.component.html.HtmlPanelMenu; import org.richfaces.component.html.HtmlPanelMenuGroup; import org.richfaces.component.html.HtmlPanelMenuItem; public class PanelMenu { private Object current; private boolean singleMode; private HtmlPanelMenu menu2; public void criaMenu1(){ HtmlPanelMenu menuAdm = new HtmlPanelMenu(); HtmlPanelMenuGroup grupo1 = new HtmlPanelMenuGroup(); grupo1.setName("Grupo1"); grupo1.setLabel("Grupo1 - ADM"); HtmlPanelMenuGroup grupo2 = new HtmlPanelMenuGroup(); grupo2.setName("Grupo2"); grupo2.setLabel("Grupo2 - ADM"); HtmlPanelMenuItem menuItem1 = new HtmlPanelMenuItem(); menuItem1.setName("Cadastrar"); menuItem1.setLabel("Cadastrar"); HtmlPanelMenuItem menuItem2 = new HtmlPanelMenuItem(); menuItem2.setName("Consultar"); menuItem2.setLabel("Consultar"); HtmlPanelMenuItem menuItem3 = new HtmlPanelMenuItem(); menuItem3.setName("Item2"); menuItem3.setLabel("Item 2.1"); HtmlPanelMenuItem menuItem4 = new HtmlPanelMenuItem(); menuItem4.setName("Item3"); menuItem4.setLabel("Item 2.2"); grupo1.getChildren().add(menuItem1); grupo1.getChildren().add(menuItem2); grupo2.getChildren().add(menuItem3); grupo2.getChildren().add(menuItem4); menuAdm.getChildren().add(grupo1); menuAdm.getChildren().add(grupo2); menu2 = menuAdm; } public void criaMenu2(){ HtmlPanelMenu menuFin = new HtmlPanelMenu(); HtmlPanelMenuGroup grupo1 = new HtmlPanelMenuGroup(); grupo1.setName("Grupo1"); grupo1.setLabel("Grupo1 - FIN"); //menuGroup. HtmlPanelMenuItem menuItem1 = new HtmlPanelMenuItem(); menuItem1.setName("Cadastrar"); menuItem1.setLabel("Cadastrar"); HtmlPanelMenuItem menuItem2 = new HtmlPanelMenuItem(); menuItem2.setName("Consultar"); menuItem2.setLabel("Consultar"); grupo1.getChildren().add(menuItem1); grupo1.getChildren().add(menuItem2); menuFin.getChildren().add(grupo1); menu2 = menuFin; } public void setSingleMode(boolean singleMode) { this.singleMode = singleMode; } public PanelMenu() { } public Object getCurrent() { return this.current; } public void setCurrent(Object current) { this.current = current; } public String updateCurrent() { FacesContext context=FacesContext.getCurrentInstance(); setCurrent((String)context.getExternalContext().getRequestParameterMap().get("current")); System.out.println("fake called."); return null; } public void updateCurrent(ActionEvent event) { setCurrent(((UIPanelMenuItem)event.getComponent()).getLabel().toString()); } public boolean isSingleMode() { return singleMode; } public HtmlPanelMenu getMenu2() { return menu2; } public void setMenu2(HtmlPanelMenu menu2) { this.menu2 = menu2; } }