Olá, pessoal. Fiz uma página jsp com um componente rich:panelMenu, populado por meio de um binding, e quero adicionar nesse mesmo código o suporte ajax para que qualquer item clicado atualize um a4j:outputPanel .
O problema é que sempre que um item é clicado ocorre o mesmo erro: javax.el.ELException: AjaxUpdate component not found for id :formStore:null
O meu h:form tem a id formStore na minha página JSF. Independente de qual nome do outputPanel que eu especifique, ou mesmo que não especifique, essa mensagem é mostrada, como se não localizasse o ouputPanel do ajax.
A classe que faz o binding com o componente rich:panelMenu :
<%@pagelanguage="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><%@taglibprefix="f"uri="http://java.sun.com/jsf/core"%><%@taglibprefix="h"uri="http://java.sun.com/jsf/html"%><%@taglibprefix="t"uri="http://myfaces.apache.org/tomahawk"%><%@tagliburi="http://richfaces.org/a4j"prefix="a4j"%><%@tagliburi="http://richfaces.org/rich"prefix="rich"%><f:view><!DOCTYPEhtmlPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"></head><body><jsp:includepage="/System/header.jsp"></jsp:include><h:formid="formStore"><h:panelGridid="mainPanel"style="vertical-align: top;"columns="2"><%--columnClasses="gridContent"--%><rich:columnstyle="vertical-align:top; border-style: none;"><rich:panelMenubinding="#{menuBean.menuComponent}"style="width:200px;"><!--mode="ajax"--></rich:panelMenu></rich:column><rich:columnstyle="vertical-align:top; border-style: none;"><rich:panelid="panelItens"bodyClass="inpanelBody"style="width:100%"><a4j:outputPanelid="outputPanelModelos"><!--ajaxRendered="true"associadoaomode=ajaxmecausaoproblemadeatualizarapágiainteiraquandooajaxcommandobuttondestepaineléclicado--><h:outputTextvalue="Modelos existentes para #{panelMenu.current}"id="current"/><rich:dataTablevalue="#{panelMenu.modelos}"var="modelo"id="tableModelos"width="100%"><rich:column><h:graphicImagevalue="/img/store/#{modelo.imagem}"></h:graphicImage></rich:column><rich:column><h:outputTextvalue="#{modelo.nome}"></h:outputText></rich:column><rich:column><h:outputTextvalue="#{modelo.modelo}"></h:outputText></rich:column><rich:column><h:outputTextvalue="#{modelo.fabricante.nome}"></h:outputText></rich:column><rich:column><a4j:region><a4j:commandButtontype="button"image="/img/store/carrinho.gif"value="Reservar"action="#{sessionCartBean.addToCart}"><a4j:actionparamassignTo="#{sessionCartBean.modeloId }"value="#{modelo.id}"name="modeloId"></a4j:actionparam><a4j:supportevent="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>
O Managed bean :
packagebr.gov.xxxxxxx.managedbean.html;importjava.util.Date;importjava.util.List;importjavax.el.ValueExpression;importjavax.faces.application.Application;importjavax.faces.context.FacesContext;importjavax.faces.el.ValueBinding;importjavax.naming.NamingException;importorg.ajax4jsf.component.html.HtmlAjaxSupport;importorg.ajax4jsf.event.AjaxEvent;importorg.ajax4jsf.event.AjaxListener;importorg.ajax4jsf.taglib.html.jsp.AjaxSupportTag;importorg.apache.myfaces.custom.updateactionlistener.UpdateActionListener;importorg.richfaces.component.html.HtmlPanelMenu;importorg.richfaces.component.html.HtmlPanelMenuGroup;importorg.richfaces.component.html.HtmlPanelMenuItem;importbr.gov.xxxxxxx.entity.CategoriaPojo;importbr.gov.xxxxxxx.managedbean.HelperCategoriaBean;importbr.gov.xxxxxxx.persistence.exception.JcifPersistenceException;publicclassSubCategoriasMenuBeanimplementsAjaxListener{privateHtmlPanelMenumenuComponent;privateintparentId;privatestaticList<CategoriaPojo>subCategorias;publicStringloadMenu(){return"store";}publicHtmlPanelMenugetMenuComponent(){menuComponent=null;HtmlPanelMenuGroupgroup=newHtmlPanelMenuGroup();group.setLabel("SubCategorias");group.setId("groupId_01");group.setExpanded(true);if(menuComponent==null)menuComponent=newHtmlPanelMenu();menuComponent.setId("menuCategorias");System.out.println("subcateg: "+getParentId());if(getParentId()==0)returnnewHtmlPanelMenu();FacesContextcontext=FacesContext.getCurrentInstance();Applicationapplication=context.getApplication();try{subCategorias=newHelperCategoriaBean().listarSubCategorias(getParentId());}catch(JcifPersistenceExceptione){e.printStackTrace();}catch(NamingExceptione){e.printStackTrace();}for(CategoriaPojoc:subCategorias){HtmlPanelMenuItemitem=newHtmlPanelMenuItem();application.createComponent(HtmlPanelMenuItem.COMPONENT_TYPE);item.setId("itemId_"+c.getId());item.setLabel(c.getCategoria());item.setRendered(true);Class[]params={};ValueBindingpropriedade=application.createValueBinding("#{panelMenu.current}");ValueBindingv=application.createValueBinding(c.getCategoria());UpdateActionListeneru=newUpdateActionListener();u.setPropertyBinding(propriedade);u.setValueBinding(v);item.addActionListener(u);ValueBindingp2=application.createValueBinding("#{panelMenu.subCategoriaId}");ValueBindingv2=application.createValueBinding(String.valueOf(c.getId()));UpdateActionListeneru2=newUpdateActionListener();u2.setPropertyBinding(p2);u2.setValueBinding(v2);item.addActionListener(u2);group.getChildren().add(item);}HtmlAjaxSupportajaxSupport=newHtmlAjaxSupport();ajaxSupport.setEvent("onclick");ajaxSupport.setReRender(":formStore:outputPanelModelos");group.getChildren().add(ajaxSupport);menuComponent.getChildren().add(group);menuComponent.setSelectedChild("itemId_"+subCategorias.get(0).getId());returnmenuComponent;}publicvoidsetMenuComponent(HtmlPanelMenumenuComponent){this.menuComponent=menuComponent;}/** * @return the parentId */publicintgetParentId(){returnparentId;}/** * @param parentId the parentId to set */publicvoidsetParentId(intparentId){this.parentId=parentId;}}