preciso capturar o id de um item do combo e enviar para o meu MB. Tenho quatro combos aninhados. Assim que eu clico no primeiro, os outros 3 são renderizados. Segue o código:
--------------------------------------------------------------------------------------------
Os combos categoria, subcategoria e parametro estão funcionando certinho. Só o último combo (subparametro) que não, pois ele precisa do id da subcategoria que foi renderizada. Eu setei o id na mão pra testar e funciona: , o que eu preciso é saber o que coloca no lugar do "1".
deveria funcionar do jeito q esta … sem ter q setar na mao
um combo depende do outro certo ?
pq vc, ao invez de rederizer todos a partir d um, n vai renderizando um depois do outro( bota +1 q ajaxsupport nos combos ), so pra testa mesmo …
Rafael_Nunes
Mais fácil você fazer isso no seu MB.
No método que está setando os valores para o seu subcategoria, manda executar novamente o que faz a busca para os subparâmetros.
serjaumfantin
Não deu certo. Mesmo colocando pra chamar novamente o método eu vou precisar passar o id da subcategoria pro MB, e ele não está sendo enviado. Depois da alteração que fiz no código continuo recebendo: this.getSubCategoria().getId() >>> null.
Agora… o id da Categoria(primeiro combo) é enviado pro MB quando um dos itens é escolhido. Eu preciso fazer a mesma coisa e receber o id da subCategoria do outro lado. Daí é só sucesso!
Valew
serjaumfantin
Segue o código relevante:
MB:
publicclassCategoriaFace{privateCategoriacategoria=newCategoria();privateParametroparametro=newParametro();privateSubCategoriasubCategoria=newSubCategoria();privateSubParametrosubParametro=newSubParametro();privateList<SelectItem>subCategorias=newArrayList<SelectItem>();privateList<Parametro>parametros=newArrayList<Parametro>();privateList<SubParametro>subParametros=newArrayList<SubParametro>();/** * metodo que carrega o combo "categoria" com todas as categorias do banco. * @return */publicList<SelectItem>getCategorias(){Sessionsession=HibernateUtil.currentSession();CategoriaDAOdao=newCategoriaDAO(session);List<Categoria>lc=dao.loadAll();List<SelectItem>items=newArrayList<SelectItem>(lc.size());for(Categoriacat:lc){items.add(newSelectItem(cat.getId(),cat.getNome()));}System.out.println("getCategorias() invocado!");System.out.println("this.categoria.getId() >>> "+this.categoria.getId());returnitems;}/** * metodo que carrega o combo(subCategoria) com todas subCategorias relacionadas a categoria o qual foi escolhida no combo "categoria" * @return */publicStringactionCarregaComboSubcategoria(){this.subCategorias=getSubcategoriasByCategoria(this.getCategoria().getId());System.out.println("actionCarregaTodosCombos() invocado!");System.out.println("this.getSubCategoria().getId() >>> "+this.getSubCategoria().getId());System.out.println("this.getCategoria().getId() >>> "+this.getCategoria().getId());return"carregaCombosSubCategoriaSucesso";}/** * metodo que preenche a tabela (tableParams) com todos os parametros relacionados a categoria escolhida * @return */publicList<Parametro>getParametrosByCategoria(){Sessionsession=HibernateUtil.currentSession();CategoriaDAOdao=newCategoriaDAO(session);System.out.println("getParametrosByCategoria() invocado!");returndao.pesquisaParametrosByCategoriaId(this.getCategoria().getId());}/** * metodo que preenche o combo (subCategoria) com todas as subCategorias relacionadas a categoria escolhida no primeiro combo. * Este metodo eh invocado pelo metodo "actionCarregaComboSubcategoria" * @param idCategoria * @return */publicList<SelectItem>getSubcategoriasByCategoria(longidCategoria){Sessionsession=HibernateUtil.currentSession();CategoriaDAOdao=newCategoriaDAO(session);List<SubCategoria>subcategorias=dao.pesquisaSubcategoriasByCategoriaId(idCategoria);List<SelectItem>items=newArrayList<SelectItem>(subcategorias.size());System.out.println("getSubcategoriasByCategoria() invocado!");for(SubCategoriasubcat:subcategorias){items.add(newSelectItem(subcat.getId(),subcat.getNome()));}System.out.println("items >>> "+items);returnitems;}/** * metodo que "DEVERIA" preencher a tabela (tableSubParams) com todos os subParametros relacionados a subCategoria escolhida * Eh nesse metodo que esta dando null: * this.getSubCategoria().getId() >>> null * @return */publicList<SubParametro>getSubParametrosBySubCategoria(){Sessionsession=HibernateUtil.currentSession();CategoriaDAOdao=newCategoriaDAO(session);System.out.println("getSubParametrosBySubCategoria() invocado!");System.out.println(" * this.getSubCategoria().getId() >>> "+this.getSubCategoria().getId());returndao.pesquisaSubParametrosBySubCategoriaId(this.getSubCategoria().getId());}