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;
 }
}
 
    