JSF Renderizar 2 combos e 1 table

0 respostas
S

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

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

               &lt;f:verbatim&gt;<br />&lt;/f:verbatim&gt;

               &lt;a4j:support event="onchange" reRender="tableParametros" action="#{categoriaFace.parametrosByCategoria}" ajaxSingle="true"/&gt;

               &lt;!-- parametros --&gt;
               &lt;rich:dataTable value="#{categoriaFace.parametros}" var="parametro" rendered="#{not empty categoriaFace.parametros}" rows="5" id="tableParametros" width="30%" cellspacing="0" cellpadding="0" border="1"&gt;
                   &lt;h:column&gt;
                       &lt;f:facet name="header"&gt;
                           &lt;h:outputText value="NOME" /&gt;
                       &lt;/f:facet&gt;
                       &lt;h:outputText value="#{parametro.nome}" /&gt;
                   &lt;/h:column&gt;

                   &lt;f:facet name="footer"&gt;
                       &lt;rich:datascroller /&gt;
                   &lt;/f:facet&gt;

               &lt;/rich:dataTable&gt;

           &lt;/h:panelGrid&gt;&lt;/fieldset&gt;
       &lt;/h:form&gt;
   &lt;/f:view&gt;
MB --------------
public class CategoriaFace {

   private Categoria categoria = new Categoria();

   private SubCategoria subCategoria = new SubCategoria();

   private List&lt;SelectItem&gt; subCategorias = new ArrayList&lt;SelectItem&gt;();

   private List&lt;Parametro&gt; parametros = new ArrayList&lt;Parametro&gt;();

   public String actionCarregaSubcategoriasByCategoria(){
       this.subCategorias = getSubcategoriasByCategoria(this.getCategoria().getId());

       return "getSubcategoriasByCategoriaSucesso";
   }

   public List&lt;SelectItem&gt; getSubcategoriasByCategoria(longidCategoria){
       Session session = HibernateUtil.currentSession();
       CategoriaDAO dao = new CategoriaDAO(session);

       List&lt;SubCategoria&gt; subcategorias = dao.pesquisaSubcategoriasByCategoriaId(idCategoria);
       List&lt;SelectItem&gt; items = new ArrayList&lt;SelectItem&gt;(subcategorias.size());

       System.out.println(&quot;getSubcategoriasByCategoria() invocado!&quot;);

       for(SubCategoria subcat : subcategorias){
           items.add(new SelectItem(subcat.getId(), subcat.getNome()));
       }

       System.out.println(&quot;items &gt;&gt;&gt; &quot; + items);

       return items;
   }

   public List&lt;SelectItem&gt; getCategorias(){
       Session session = HibernateUtil.currentSession();
       CategoriaDAO dao = new CategoriaDAO(session);

       List&lt;Categoria&gt; lc = dao.loadAll();
       List&lt;SelectItem&gt; items = new ArrayList&lt;SelectItem&gt;(lc.size());

       for(Categoria cat : lc){
           items.add(new SelectItem(cat.getId(), cat.getNome()));
       }

       System.out.println(&quot;getCategorias() invocado!&quot;);

       System.out.println(&quot;items &gt;&gt;&gt; &quot; + items);

       return items;
   }

   public String getParametrosByCategoria(){
       Session session = HibernateUtil.currentSession();
       CategoriaDAO dao = new CategoriaDAO(session);

       parametros = dao.pesquisaParametrosByCategoriaId(this.getCategoria().getId());

       System.out.println(&quot;lista params &gt;&gt;&gt; &quot; + parametros);

       System.out.println(&quot;categoria &gt;&gt;&gt; &quot; + this.getCategoria().getId());

       return &quot;pesquisaCategoriaSucesso&quot;;
   }

Valew

Criado 12 de março de 2009
Respostas 0
Participantes 1