Erro passando valores de um <p:selectonemenu> para outro

0 respostas
alexandresobral2004

Caros amigos, estou há 3 dias querendo descobrir como fazer para um <p:selectomenu> passar o valor para outro, o valor vem sempre nulo.Já ví que aqui no GUJ tem algumas mensagens de dicas sobre este problema, mas nenhuma dica ainda resolveu meu problema.Posto abaixo o código da minha página jsf, meu managedBEan e o método que chamo pelo dao.

MINHA PÁGINA JSF

<h:form id="entraproduto" prependId="false" ><!--
-->               
                <p:growl id="msgs" showDetail="true"/>  
                <p:panelGrid columns="2" style="alignment-adjust: central" id="entra" >
                    <f:facet name="header">
                        Entrada de Produtos
                    </f:facet>
                    <h:outputText value="Quantidade: *" id="qntde"/>
                    <p:inputText   value="#{entraProdutoFace.selectedEntradas.qtde_entrada}" size="4" maxlength="4"/>
                    <h:outputText value="Data Entrada: *" id="dtEntrada"/>
                    <p:inputMask mask="99/99/9999"   value="#{entraProdutoFace.selectedEntradas.data_entrada}" size="8"/>
                    <h:outputText value="Categorias: *"/>

                    <p:selectOneMenu  value="#{categoriaFace.selectedCategoria}" id="categoria2"   effect="fade" >
                        <f:selectItem itemLabel="Selecione" itemValue=""/>
                        <f:selectItems  value="#{categoriaFace.categorias}" var="cat" itemLabel="#{cat.catNome}" itemValue="#{cat.catId}" />
                        <p:ajax update="prod" listener="#{produtoFace.mudaProduto}"  immediate="true" />
                        
                    </p:selectOneMenu>
           
                    <br/>


                    <p:selectOneMenu id="prod" value="#{produtoFace.selectedProduto.proId}"  effect="fade"  > 
                     <f:selectItem itemLabel="Selecione" itemValue=""/>
                        <f:selectItems value="#{produtoFace.produtos}" var="produto" itemLabel="#{produto.proNome}" itemValue="#{produto.proId}"  />
                         
                    </p:selectOneMenu>
                </p:panelGrid>
            </h:form>

Esse é o método que preenche a lista de categorias, ele passa uma lista.

public List<Categoria> getCategorias() throws ClassNotFoundException, SQLException{
        if(categorias == null){
            categorias = catDAO.getAllCategorias();
        }
        return categorias;
    }

Esse é o método que é chamado pelo ajax, ele está dentro de ProdutoFace

public void mudaProduto() throws ClassNotFoundException, SQLException{
         Produtos = null;
         Produtos = new ArrayList<Produto>();
         Produtos = proDAO.pegaProdutosByCat(this.SelectedCategoria);
         
    }

Abaixo o Método PegaProdutosByCat() que fica no ProdutoDAO

public List pegaProdutosByCat(Categoria cat) throws ClassNotFoundException, SQLException{
      if(cat == null)return null;
        List <Produto> lista = new ArrayList<Produto>();
        PreparedStatement ps = getPreparedStatement("select * from produto where categoria_cat_ID=?");
        ps.setInt(1, cat.getCatId());
        ResultSet rs = ps.executeQuery();
        while(rs.next()){
            Produto prod = new Produto();
            prod.setProId(rs.getInt("pro_ID"));
            prod.setProObservacao(rs.getString("pro_Observacao"));
            prod.setProNome(rs.getString("pro_Nome"));
            lista.add(prod);
        }
          return lista;
            
        }

O erro é que simplesmente o selectedcategoria vem sempre nulo do primeiro selectonemenu.Quem puder me auxiliar fico muitissimo grato.Estou querendo saber como faço pra preencher o segundo selectonemenu com os produtos da categoria escolhida.

Criado 7 de setembro de 2012
Respostas 0
Participantes 1