Alguém pode me dar uma idéia, do jeito que eu faço o meu menu categoria passar o valor da categoria pra outro componente que eu mesmo criei que renderiza um datagrid na tela. Igual esses menus de ecommerce(Americanas, Submarino). Eu quero clicar na categoria e ele me trazer todos os produtos daquela categoria. Meu menu de categoria esta em um componente e os produtos que serão exibidos estão em outro componente. Mas se alguém tiver alguma outra idéia de estrutura eu aceito também.
Na minha index eu to chamando esses dois componentes que eu mesmo criei. Um é um menu e outro é um dataGrid. To usando o PrimeFaces.
[code]
<g:menucategoria/>
<div id="conteudo">
<g:conteudo modelo="#{produtocrtl.listaProdutos}"/>
</div>
[/code]
O codigo do componente menu é bem simples:
<cc:implementation>
<h:form>
<p:menu model="#{menucrtl.menuModel}" id="menucategoria"/>
</h:form>
</cc:implementation>
A lista de itens que preenche o menu é essa:
[code]public MenuModel getMenuModel(){
model = new DefaultMenuModel();
List categoria = categoriaDao.findAll();
for(Categoria cat : categoria) {
item = new MenuItem();
item.setValue(cat.getDescricao());
model.addMenuItem(item);
}
return model;
}
[/code]
Agora o meu componente com o dataGrid:
[code]
cc:interface
<cc:attribute name=“modelo” required=“true”/>
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
<h:form>
<p:dataGrid var="o" value="#{cc.attrs.modelo}" columns="3" effect="true" paginator="true" paginatorPosition="top" rows="10">
<p:column>
<p:panel header="#{o.nome}">
<h:panelGrid columns="2">
<p:graphicImage value="/resources/imagens/#{o.imagem}"/>
<h:outputText value="#{o.descricao}"/>
<br/>
<h:outputText value="R$ #{o.preco}"/>
</h:panelGrid>
</p:panel>
</p:column>
</p:dataGrid>
</h:form>
</cc:implementation>
[/code]