Olá pessoal,
fiz aquele esquema dos combos aninhados do tipo País/Estados. Agora eu preciso renderizar uma tabela(tableParametros) com os PARÂMETROS relacionandos à CATEGORIA scolhida. Do jeito que tá, meu código não mostra a tabela. Assim que o primeiro combo(categoria) for clicado é pra que o segundo combo(subcategoria) e a table (tableParametros) sejam renderizados. Vou colocar o código.
Obs: os dois combos estão funcionando certinho, assim que um é escolhido, o segundo mostra somente os itens relacionados ao item escolhido no primeiro combo.
XHTML ---------------
[code] <f:view>
<h:form acceptcharset=“UTF-8”>
<fieldset>
<legend>Cadastro Categoria</legend>
<h:panelGrid columns="1">
<!-- categorias -->
<h:outputLabel for="categoria" value="Categoria " styleClass="rotulos" />
<h:selectOneMenu id="categoria" value="#{categoriaFace.categoria.id}" rendered="true">
<f:selectItems value="#{categoriaFace.categorias}" />
<a4j:support event="onchange" ajaxSingle="true" action="#{categoriaFace.actionCarregaSubcategoriasByCategoria}" reRender="categoria,subcategoria" />
</h:selectOneMenu>
<!-- subcategorias -->
<h:outputLabel for="subcategoria" value="Subcategoria" styleClass="rotulos" />
<h:selectOneMenu id="subcategoria" value="#{categoriaFace.subCategoria.id}" rendered="true">
<f:selectItems value="#{categoriaFace.subCategorias}" />
</h:selectOneMenu>
<f:verbatim><br /></f:verbatim>
<a4j:support event="onchange" reRender="tableParametros" action="#{categoriaFace.parametrosByCategoria}" ajaxSingle="true"/>
<!-- parametros -->
<rich:dataTable value="#{categoriaFace.parametros}" var="parametro" rendered="#{not empty categoriaFace.parametros}" rows="5" id="tableParametros" width="30%" cellspacing="0" cellpadding="0" border="1">
<h:column>
<f:facet name="header">
<h:outputText value="NOME" />
</f:facet>
<h:outputText value="#{parametro.nome}" />
</h:column>
<f:facet name="footer">
<rich:datascroller />
</f:facet>
</rich:dataTable>
</h:panelGrid></fieldset>
</h:form>
</f:view>[/code]
MB --------------
[code]public class CategoriaFace {
private Categoria categoria = new Categoria();
private SubCategoria subCategoria = new SubCategoria();
private List<SelectItem> subCategorias = new ArrayList<SelectItem>();
private List<Parametro> parametros = new ArrayList<Parametro>();
public String actionCarregaSubcategoriasByCategoria(){
this.subCategorias = getSubcategoriasByCategoria(this.getCategoria().getId());
return "getSubcategoriasByCategoriaSucesso";
}
public List<SelectItem> getSubcategoriasByCategoria(longidCategoria){
Session session = HibernateUtil.currentSession();
CategoriaDAO dao = new CategoriaDAO(session);
List<SubCategoria> subcategorias = dao.pesquisaSubcategoriasByCategoriaId(idCategoria);
List<SelectItem> items = new ArrayList<SelectItem>(subcategorias.size());
System.out.println("getSubcategoriasByCategoria() invocado!");
for(SubCategoria subcat : subcategorias){
items.add(new SelectItem(subcat.getId(), subcat.getNome()));
}
System.out.println("items >>> " + items);
return items;
}
public List<SelectItem> getCategorias(){
Session session = HibernateUtil.currentSession();
CategoriaDAO dao = new CategoriaDAO(session);
List<Categoria> lc = dao.loadAll();
List<SelectItem> items = new ArrayList<SelectItem>(lc.size());
for(Categoria cat : lc){
items.add(new SelectItem(cat.getId(), cat.getNome()));
}
System.out.println("getCategorias() invocado!");
System.out.println("items >>> " + items);
return items;
}
public String getParametrosByCategoria(){
Session session = HibernateUtil.currentSession();
CategoriaDAO dao = new CategoriaDAO(session);
parametros = dao.pesquisaParametrosByCategoriaId(this.getCategoria().getId());
System.out.println("lista params >>> " + parametros);
System.out.println("categoria >>> " + this.getCategoria().getId());
return "pesquisaCategoriaSucesso";
}[/code]
Valew