Complementando:
a página é template.jsp :
[code]<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
<%@ taglib prefix=“f” uri=“http://java.sun.com/jsf/core” %>
<%@ taglib prefix=“h” uri=“http://java.sun.com/jsf/html” %>
<%@ taglib prefix=“t” uri=“http://myfaces.apache.org/tomahawk”%>
<%@ taglib uri=“http://richfaces.org/a4j” prefix=“a4j”%>
<%@ taglib uri=“http://richfaces.org/rich” prefix=“rich”%>
<f:view>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=ISO-8859-1”>
</head>
<body>
<jsp:include page="/System/header.jsp"></jsp:include>
<h:form id=“formStore”>
<h:panelGrid id=“mainPanel” style=“vertical-align: top;” columns=“2” ><%–columnClasses=“gridContent”–%>
<rich:column style=“vertical-align:top; border-style: none;”>
<rich:panelMenu binding="#{menuBean.menuComponent}" style=“width:200px;” ><!-- mode=“ajax” -->
</rich:panelMenu>
</rich:column>
<rich:column style="vertical-align:top; border-style: none;">
<rich:panel id="panelItens" bodyClass="inpanelBody" style="width:100%">
<a4j:outputPanel id="outputPanelModelos"><!-- ajaxRendered="true" associado ao mode=ajax me causa o problema de atualizar a págia inteira quando o ajax commando button deste painel é clicado-->
<h:outputText value="Modelos existentes para #{panelMenu.current}" id="current" />
<rich:dataTable value="#{panelMenu.modelos}" var="modelo" id="tableModelos" width="100%">
<rich:column>
<h:graphicImage value="/img/store/#{modelo.imagem}"></h:graphicImage>
</rich:column>
<rich:column>
<h:outputText value="#{modelo.nome}"></h:outputText>
</rich:column>
<rich:column>
<h:outputText value="#{modelo.modelo}"></h:outputText>
</rich:column>
<rich:column>
<h:outputText value="#{modelo.fabricante.nome}"></h:outputText>
</rich:column>
<rich:column>
<a4j:region>
<a4j:commandButton type="button" image="/img/store/carrinho.gif" value="Reservar" action="#{sessionCartBean.addToCart}">
<a4j:actionparam assignTo="#{sessionCartBean.modeloId }" value="#{modelo.id}" name="modeloId"></a4j:actionparam>
<a4j:support event="onclick" reRender="outputLastItem">
</a4j:support>
</a4j:commandButton>
</a4j:region>
</rich:column>
</rich:dataTable>
</a4j:outputPanel>
</rich:panel>
</rich:column>
</h:panelGrid>
</h:form>
</body>
</html>
</f:view>[/code]
O Managed bean :
[code]package br.gov.xxxxxxx.managedbean.html;
import java.util.Date;
import java.util.List;
import javax.el.ValueExpression;
import javax.faces.application.Application;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import javax.naming.NamingException;
import org.ajax4jsf.component.html.HtmlAjaxSupport;
import org.ajax4jsf.event.AjaxEvent;
import org.ajax4jsf.event.AjaxListener;
import org.ajax4jsf.taglib.html.jsp.AjaxSupportTag;
import org.apache.myfaces.custom.updateactionlistener.UpdateActionListener;
import org.richfaces.component.html.HtmlPanelMenu;
import org.richfaces.component.html.HtmlPanelMenuGroup;
import org.richfaces.component.html.HtmlPanelMenuItem;
import br.gov.xxxxxxx.entity.CategoriaPojo;
import br.gov.xxxxxxx.managedbean.HelperCategoriaBean;
import br.gov.xxxxxxx.persistence.exception.JcifPersistenceException;
public class SubCategoriasMenuBean implements AjaxListener{
private HtmlPanelMenu menuComponent;
private int parentId;
private static List<CategoriaPojo> subCategorias;
public String loadMenu(){
return "store";
}
public HtmlPanelMenu getMenuComponent() {
menuComponent = null;
HtmlPanelMenuGroup group = new HtmlPanelMenuGroup();
group.setLabel("SubCategorias");
group.setId("groupId_01");
group.setExpanded(true);
if (menuComponent == null)
menuComponent = new HtmlPanelMenu();
menuComponent.setId("menuCategorias");
System.out.println("subcateg: " + getParentId());
if(getParentId() == 0)
return new HtmlPanelMenu();
FacesContext context = FacesContext.getCurrentInstance();
Application application = context.getApplication();
try {
subCategorias = new HelperCategoriaBean().listarSubCategorias(getParentId());
} catch (JcifPersistenceException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
for(CategoriaPojo c : subCategorias){
HtmlPanelMenuItem item = new HtmlPanelMenuItem();
application.createComponent(HtmlPanelMenuItem.COMPONENT_TYPE);
item.setId(“itemId_”+c.getId());
item.setLabel(c.getCategoria());
item.setRendered(true);
Class[] params = {};
ValueBinding propriedade = application.createValueBinding("#{panelMenu.current}");
ValueBinding v = application.createValueBinding(c.getCategoria());
UpdateActionListener u = new UpdateActionListener();
u.setPropertyBinding(propriedade);
u.setValueBinding(v);
item.addActionListener(u);
ValueBinding p2 = application.createValueBinding("#{panelMenu.subCategoriaId}");
ValueBinding v2 = application.createValueBinding(String.valueOf(c.getId()));
UpdateActionListener u2 = new UpdateActionListener();
u2.setPropertyBinding(p2);
u2.setValueBinding(v2);
item.addActionListener(u2);
group.getChildren().add(item);
}
HtmlAjaxSupport ajaxSupport = new HtmlAjaxSupport();
ajaxSupport.setEvent("onclick");
ajaxSupport.setReRender(":formStore:outputPanelModelos");
group.getChildren().add(ajaxSupport);
menuComponent.getChildren().add(group);
menuComponent.setSelectedChild("itemId_"+subCategorias.get(0).getId());
return menuComponent;
}
public void setMenuComponent(HtmlPanelMenu menuComponent) {
this.menuComponent = menuComponent;
}
/**
* @return the parentId
*/
public int getParentId() {
return parentId;
}
/**
* @param parentId the parentId to set
*/
public void setParentId(int parentId) {
this.parentId = parentId;
}
}
[/code]
Espero que isso ajude alguém a me ajudar!