tenho o seguinte problema, venho desenvolvendo uma aplicação web e estou com um erro na hora de listar meu DataTable, é impressionante pois, em 4 das listegens que eu tenho que exibir, apenas 1 está funcionando corretamente. as que estão erradas somente é exibido os botões de alteração e exclusão.
segue o codigo de uma das classes que estão erradas.
packagebr.com.docfacil.docfacilweb.control;importjava.util.ArrayList;importjava.util.List;importjavax.faces.component.UIData;importbr.com.docfacil.docfacilweb.model.bean.Perfil;importbr.com.docfacil.docfacilweb.model.dao.PerfilDao;publicclassPerfilAction{privatePerfilperfil=newPerfil();privateList<Perfil>listPerfil=newArrayList<Perfil>();privateStringcodigo=newString();privateUIDataobjPerfil=newUIData();privateStringvalor="";privateStringcampo="";publicStringimprimir(){// imprime a listagem atual exibida.returnnull;}publicStringgrava(){newPerfilDao().gravar(perfil);perfil=newPerfil();returnnull;}publicStringpesquisa(){if(!valor.equals("")){if(campo.equals("codigo"))listPerfil=newPerfilDao().findByCodigo(valor);if(campo.equals("descricao"))listPerfil=newPerfilDao().findByDescricao(valor);}returnnull;}// ao tentar ser deletado o perfil será verificado se existe algum usuario// utilizando aquele perfil, caso exista o sistema não deixará excluir.publicStringdelete(){try{perfil=(Perfil)objPerfil.getRowData();newPerfilDao().delete(perfil);// mensagem de sucesso.}catch(Exceptione){// mensagem de erro.}returnnull;}publicStringaltera(){perfil=(Perfil)objPerfil.getRowData();return"alteraPerfil";}publicStringgetCodigo(){codigo=newPerfilDao().proximoCodigo();returncodigo;}publicvoidsetCodigo(Stringcodigo){this.codigo=codigo;}publicPerfilgetPerfil(){returnperfil;}publicvoidsetPerfil(Perfilperfil){this.perfil=perfil;}publicList<Perfil>getListPerfil(){if(valor.equals(""))listPerfil=newPerfilDao().list();returnlistPerfil;}publicvoidsetListPerfil(List<Perfil>listPerfil){this.listPerfil=listPerfil;}publicUIDatagetObjPerfil(){returnobjPerfil;}publicvoidsetObjPerfil(UIDataobjPerfil){this.objPerfil=objPerfil;}publicStringgetValor(){returnvalor;}publicvoidsetValor(Stringvalor){this.valor=valor;}publicStringgetCampo(){returncampo;}publicvoidsetCampo(Stringcampo){this.campo=campo;}}
e a JSP
<%@tagliburi="http://java.sun.com/jsf/core"prefix="f"%><%@tagliburi="http://java.sun.com/jsf/html"prefix="h"%><%@tagliburi="http://richfaces.ajax4jsf.org/rich"prefix="rich"%><%@tagliburi="http://richfaces.org/a4j"prefix="a4j"%><html><f:view><head><linkhref="css/default.css"rel="stylesheet"type="text/css"/><title><h:outputTextvalue="DocFacil - Lista de Categorias"/></title></head><body><divid="header"align="right"><h:outputLinkvalue="Home"><h:outputTextvalue="Voltar"/></h:outputLink> <h:outputLinkvalue="Logout"><h:outputTextvalue="Logout"/></h:outputLink></div><divid="title"align="center"><h:outputTextvalue="Lista de Categorias"/></div><divid="page"align="center"><h:form><h:panelGridcolumns="3"><h:outputTextvalue="Valor: "/><h:inputTextid="valor"value="#{categoriaAction.valor}"size="20"/><h:messagefor="valor"/><h:outputTextvalue="Campo: "/><h:panelGridcolumns="3"><h:selectOneRadioid="campos"value="#{categoriaAction.campo}"><f:selectItemitemValue="codigo"itemLabel="Código"/><f:selectItemitemValue="descricao"itemLabel="Descrição"/><f:selectItemitemValue="nivel"itemLabel="Nível"/></h:selectOneRadio></h:panelGrid><h:messagefor="campos"/></h:panelGrid><h:commandButtonaction="#{categoriaAction.lista}"value="Pesquisar"/></h:form></div><divid="page"align="center"><h:form><rich:dataTablebinding="#{categoriaAction.objDataTableCategoria}"id="categoria"var="categoriaData"value="#{categoriaAction.listaCategoria}"rendered="#{not empty categoriaAction.listaCategoria}"rows="10"width="95%"border="1"><h:column><f:facetname="header"><h:outputTextvalue="Código"/></f:facet><h:outputTextvalue="#{categoriaData.codigo}"/></h:column><h:column><f:facetname="header"><h:outputTextvalue="Descrição"/></f:facet><h:outputTextvalue="#{categoriaData.descricao}"/></h:column><h:column><f:facetname="header"><h:outputTextvalue="Nível"/></f:facet><h:outputTextvalue="#{categoriaData.nivel}"/></h:column><h:column><f:facetname="header"><h:outputTextvalue="Alterar"/></f:facet><center><h:commandButtonaction="#{categoriaAction.alterar}"image="imagens/update.gif"style="height: 19px; width: 18px"/></center></h:column><h:column><f:facetname="header"><h:outputTextvalue="Excluir"/></f:facet><center><h:commandButtonaction="#{categoriaAction.delete}"image="imagens/error.gif"style="height: 19px; width: 18px"/></center></h:column><f:facetname="footer"><rich:datascrollerfor="categoria"/></f:facet></rich:dataTable></h:form><center><h:outputLinkvalue="GravaCategoria.jsf"><h:outputTextvalue="Nova Categoria"/></h:outputLink></center></div><divid="footer"align="right"><h:form><h:commandLinkaction="#{categoriaAction.imprimir}"value="imprimir"/> <h:outputLinkvalue="ListaCategoria.jsf"><h:outputTextvalue="Voltar"/></h:outputLink></h:form></div></body></f:view></html>
a minha DAO que busca os dados para incrementar a lista está funcionando tranquilamente, soh que as unicas coisas que exibe na lista são os buttons de alterar e excluir coisa sem logica. alguem poderia me dar uma dica do que eu estou fazendo de errado ?
OBS: as classes Action estão todas funcionando corretamente no meu faces.
<%@tagliburi="http://java.sun.com/jsf/core"prefix="f"%><%@tagliburi="http://java.sun.com/jsf/html"prefix="h"%><%@tagliburi="http://richfaces.ajax4jsf.org/rich"prefix="rich"%><%@tagliburi="http://richfaces.org/a4j"prefix="a4j"%><html><f:view><head><title><h:outputTextvalue="DocFacil - Lista de Perfil"/></title><linkhref="css/default.css"rel="stylesheet"type="text/css"/></head><body><divid="header"align="right"><h:outputLinkvalue="MenuPrincipal.jsf"><h:outputTextvalue="Home"/></h:outputLink> <h:outputLinkvalue="logout"><h:outputTextvalue="Logout"/></h:outputLink></div><divalign="center"><h:outputText>ListadePerfil</h:outputText></div><divid="page"align="center"><h:form><h:panelGridcolumns="2"><h:outputTextvalue="Valor: "/><h:inputTextvalue="#{perfilAction.valor}"style="width: 251px"/><h:outputTextvalue="Por: "/><h:panelGridcolumns="2"><h:selectOneRadiovalue="#{perfilAction.campo}"><f:selectItemitemValue="codigo"itemLabel="Código"/><f:selectItemitemValue="descricao"itemLabel="Descrição"/></h:selectOneRadio></h:panelGrid></h:panelGrid><h:commandButtontype="submit"value="Pesquisar"action="#{perfilAction.pesquisa}"/></h:form></div><divid="page"align="center"><h:form><rich:dataTablebinding="#{perfilAction.objPerfil}"id="perfil"var="perfilData"value="#{perfilAction.listPerfil}"rendered="#{not empty perfilAction.listPerfil}"rows="10"width="80%"border="1"><f:facetname="header"><rich:columnGroup><h:column><h:outputTextvalue="Código"/></h:column><h:column><h:outputTextvalue="Descrição"/></h:column><h:column><h:outputTextvalue="Consulta"/></h:column><h:column><h:outputTextvalue="Manutenção"/></h:column><h:column><h:outputTextvalue="Gerenciamento"/></h:column><h:column><h:outputTextvalue="Configuração"/></h:column><h:column><h:outputTextvalue="Alterar"/></h:column><h:column><h:outputTextvalue="Excluir"/></h:column></rich:columnGroup></f:facet><h:column><h:outputTextvalue="#{perfilData.codigo}"/></h:column><h:column><h:outputTextvalue="#{perfilData.descricao}"/></h:column><h:column><h:outputTextvalue="#{perfilData.consulta}"/></h:column><h:column><h:outputTextvalue="#{perfilData.manutencao}"/></h:column><h:column><h:outputTextvalue="#{perfilData.gerenciamento}"/></h:column><h:column><h:outputTextvalue="#{perfilData.configuracao}"/></h:column><h:column><h:commandButtonaction="#{categoriaAction.alterar}"image="imagens/update.gif"style="height: 19px; width: 18px"/></h:column><h:column><h:commandButtonaction="#{categoriaAction.delete}"image="imagens/error.gif"style="height: 19px; width: 18px"/></h:column><f:facetname="footer"><rich:datascrollerfor="perfil"/></f:facet></rich:dataTable></h:form><h:outputLinkvalue="GravaPerfil.jsf"><h:outputTextvalue="Novo Perfil"/></h:outputLink></div><divid="footer"align="right"><h:outputLinkvalue=""><h:outputTextvalue="Imprimir"/></h:outputLink> <h:outputLinkvalue="MenuPrincipal.jsf"><h:outputTextvalue="Voltar"/></h:outputLink></div></body></f:view></html>
Z
Zabimaru
A sua lista possui valores, vc olhou se não está retornando uma lista de objetos com os valores null, tipo 10 objetos mas com seus valores nulos???
abss
SilverFangs
já verifiquei ela retorna a lista de objeto perfeitamente preenchida… a lista de perfil funcionou, mas não mexi em absolutamente nada do código, apenas no width da datatable,
mas as outras continuam erradas.
o pior disso tudo é que eu não achei onde está a raiz do problema.
SilverFangs
postarei o codigo da subcategoria que ainda possui erro.
a bean e a dao tambem para que não reste duvidas.
packagebr.com.docfacil.docfacilweb.model.dao;importjava.util.ArrayList;importjava.util.List;importjavax.faces.model.SelectItem;importorg.hibernate.Query;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.Transaction;importorg.hibernate.cfg.AnnotationConfiguration;importbr.com.docfacil.docfacilweb.model.bean.Categoria;importbr.com.docfacil.docfacilweb.model.bean.Subcategoria;publicclassSubcategoriaDao{Sessions=null;SessionFactoryf=null;Transactiont=null;publicSubcategoriaDao(){f=newAnnotationConfiguration().configure("/br/com/docfacil/docfacilweb/model/dao/hibernate.cfg.xml").buildSessionFactory();s=f.openSession();t=s.beginTransaction();}publicvoidgravar(Subcategoriasubcategoria){s.saveOrUpdate(subcategoria);t.commit();s.close();}publicList<Subcategoria>list(){Queryq=s.createQuery("from Subcategoria");List<Subcategoria>listaSubcategoria=q.list();returnlistaSubcategoria;}publicvoiddelete(Subcategoriasubcategoria){s.delete(subcategoria);t.commit();s.close();}publicList<SelectItem>listCategoria(){Queryq=s.createQuery("from Categoria");List<Categoria>listaCategoria=q.list();List<SelectItem>categorias=newArrayList<SelectItem>();for(Categoriacategoria:listaCategoria){categorias.add(newSelectItem(categoria.getCodigo().toString(),categoria.getNivel()+" - "+categoria.getDescricao()));}returncategorias;}publicList<Subcategoria>findByCodigo(Stringvalor){Queryq=s.createQuery("from Subcategoria where codigo = :valor");q.setInteger("valor",Integer.parseInt(valor));returnq.list();}publicList<Subcategoria>findByDescricao(Stringvalor){Queryq=s.createQuery("from Subcategoria where descricao like :valor");q.setString("valor","%"+valor+"%");returnq.list();}publicList<Subcategoria>findBySubnivel(Stringvalor){Queryq=s.createQuery("from Subcategoria where subnivel = :valor");q.setString("valor",valor);returnq.list();}publicList<Subcategoria>findByCategoria(Stringvalor){Queryq=s.createQuery("from Subcategoria where categoria_codigo = :valor");q.setInteger("valor",Integer.parseInt(valor));returnq.list();}publicStringproximoCodigo(){Queryq=s.createSQLQuery("select max(codigo) from subcategoria");Integerresult=(Integer)q.uniqueResult();if(result==null){return"1";}else{return""+(result+1);}}// public static void main(String[] args) {// List<Subcategoria> subList = new ArrayList<Subcategoria>();// subList = new SubcategoriaDao().list();// for (Subcategoria subcategoria : subList) {// System.out.println(subcategoria.getCodigo());// System.out.println(subcategoria.getDescricao());// System.out.println(subcategoria.getCategoria().getCodigo());// System.out.println(subcategoria.getSubnivel());// }// }}
Action
packagebr.com.docfacil.docfacilweb.control;importjava.util.ArrayList;importjava.util.List;importjavax.faces.component.UIData;importjavax.faces.model.SelectItem;importbr.com.docfacil.docfacilweb.model.bean.Categoria;importbr.com.docfacil.docfacilweb.model.bean.Subcategoria;importbr.com.docfacil.docfacilweb.model.dao.SubcategoriaDao;publicclassSubcategoriaAction{privateSubcategoriasubcategoria=newSubcategoria();privateCategoriacategoria=newCategoria();privateList<Subcategoria>listSubcategoria=newArrayList<Subcategoria>();// lista// de// subcategoriasprivateList<SelectItem>listCategoria=newArrayList<SelectItem>();// lista// de// categorias// para// o// listboxprivateStringvalor="";// valor da pesquisaprivateStringcampo="";// campo da tabela de pesquisa selecionado no// radioboxprivateStringcodigo="";// recebe o valor do proximo codigo para// exibição.privateUIDataobjSubcategoria=newUIData();// recebe o valor da lista// de subcategorias.privateStringcodigoCategoria=newString();// recebe o valor de uma// listbox de categoria.publicStringimprimir(){returnnull;}publicStringgrava(){try{Categoriacategoria=newCategoria();categoria.setCodigo(Integer.parseInt(codigoCategoria));subcategoria.setCategoria(categoria);newSubcategoriaDao().gravar(subcategoria);// messagem}catch(Exceptione){// mensagem}finally{subcategoria=null;returnnull;}}publicStringdelete(){// se a subcategoria não estiver vinculada a nenhuma rota, então ele// enviará uma mensagem informando que não poderá ser excluido.newSubcategoriaDao().delete(subcategoria);returnnull;}publicStringpesquisa(){if(valor.equals("")){listSubcategoria=newSubcategoriaDao().list();}else{if(campo.equals("codigo"))listSubcategoria=newSubcategoriaDao().findByCodigo(valor);if(campo.equals("descricao"))listSubcategoria=newSubcategoriaDao().findByDescricao(valor);if(campo.equals("categoria"))listSubcategoria=newSubcategoriaDao().findByCategoria(valor);if(campo.equals("subnivel"))listSubcategoria=newSubcategoriaDao().findBySubnivel(valor);}returnnull;}publicStringaltera(){subcategoria=(Subcategoria)objSubcategoria.getRowData();return"alteraSubcategoria";}// getter and setterpublicvoidsetSubcategoria(Subcategoriasubcategoria){this.subcategoria=subcategoria;}publicCategoriagetCategoria(){returncategoria;}publicvoidsetCategoria(Categoriacategoria){this.categoria=categoria;}// list recebendo valores default caso não tenha sido passado nenhum// parametro no formulario de pesquisa.publicList<Subcategoria>getListSubcategoria(){if(valor.equals(""))listSubcategoria=newSubcategoriaDao().list();for(Subcategoriasubcategoria:listSubcategoria){System.out.println(subcategoria.getCodigo());System.out.println(subcategoria.getDescricao());System.out.println(subcategoria.getCategoria().getCodigo());System.out.println(subcategoria.getSubnivel());System.out.println("====================================================");}returnlistSubcategoria;}publicvoidsetListSubcategoria(List<Subcategoria>listSubcategoria){this.listSubcategoria=listSubcategoria;}publicSubcategoriagetSubcategoria(){returnsubcategoria;}// select do formulario de inclusão de subcategoria recebendo os labels e// seus valores.publicList<SelectItem>getListCategoria(){listCategoria=newSubcategoriaDao().listCategoria();returnlistCategoria;}publicvoidsetListCategoria(List<SelectItem>listCategoria){this.listCategoria=listCategoria;}publicStringgetValor(){returnvalor;}publicvoidsetValor(Stringvalor){this.valor=valor;}publicStringgetCampo(){returncampo;}publicvoidsetCampo(Stringcampo){this.campo=campo;}publicStringgetCodigo(){codigo=newSubcategoriaDao().proximoCodigo();returncodigo;}publicvoidsetCodigo(Stringcodigo){this.codigo=codigo;}publicUIDatagetObjSubcategoria(){returnobjSubcategoria;}publicvoidsetObjSubcategoria(UIDataobjSubcategoria){this.objSubcategoria=objSubcategoria;}publicStringgetCodigoCategoria(){returncodigoCategoria;}publicvoidsetCodigoCategoria(StringcodigoCategoria){this.codigoCategoria=codigoCategoria;}}
JSP
<%@tagliburi="http://java.sun.com/jsf/core"prefix="f"%><%@tagliburi="http://java.sun.com/jsf/html"prefix="h"%><%@tagliburi="http://richfaces.ajax4jsf.org/rich"prefix="rich"%><%@tagliburi="http://richfaces.org/a4j"prefix="a4j"%><html><f:view><head><linkhref="css/default.css"rel="stylesheet"type="text/css"/><title><h:outputTextvalue="DocFacil - Lista de Subcategorias"/></title></head><body><divid="header"align="right"><h:outputLinkvalue="Home">Voltar</h:outputLink> <h:outputLinkvalue="Logout">Logout</h:outputLink></div><divid="title"align="center"><h:outputTextvalue="Lista de Subcategorias"/></div><!-- Formulario de Pesquisa --><divid="page"align="center"><h:form><h:panelGridcolumns="3"><h:outputTextvalue="Valor: "/><h:inputTextid="valor"value="#{subcategoriaAction.valor}"maxlength="40"/><h:messagefor="valor"/><h:outputTextvalue="Campo: "/><h:panelGridcolumns="3"><h:selectOneRadioid="campos"value="#{subcategoriaAction.campo}"><f:selectItemitemValue="codigo"itemLabel="Código"/><f:selectItemitemValue="descricao"itemLabel="Descrição"/><f:selectItemitemValue="subnivel"itemLabel="Subnível"/><f:selectItemitemValue="categoria"itemLabel="Categoria"/></h:selectOneRadio></h:panelGrid><h:messagefor="campos"/></h:panelGrid><h:commandButtonaction="#{subcategoriaAction.pesquisa}"value="Pesquisar"/></h:form></div><!-- Listagem de Subcategorias --><divid="page"align="center"><h:form><rich:dataTableid="subcategoria"value="#{subcategoriaAction.listSubcategoria}"rendered="#{not empty subcategoriaAction.listSubcategoria}"binding="#{subcategoriaAction.objSubcategoria}"var="subcategoriaData"rows="10"border="1"width="50%"><f:facetname="header"><rich:columnGroup><h:column><h:outputTextvalue="Código"/></h:column><h:column><h:outputTextvalue="Descrição"/></h:column><h:column><h:outputTextvalue="Categoria"/></h:column><h:column><h:outputTextvalue="Subnivel"/></h:column><h:column><h:outputTextvalue="Alterar"/></h:column><h:column><h:outputTextvalue="Deletar"/></h:column></rich:columnGroup></f:facet><h:column><h:outputTextvalue="#{subcategoriaData.codigo}"/></h:column><h:column><h:outputTextvalue="#{subcategoriaData.descricao}"/></h:column><h:column><h:outputTextvalue="#{subcategoria.Data.categoria}"/></h:column><h:column><h:outputTextvalue="#{subcategoriaData.subnivel}"/></h:column><h:column><h:commandButtonaction="#{subcategoriaAction.altera}"image="imagens/update.gif"style="height: 19px; width: 18px"/></h:column><h:column><h:commandButtonaction="#{subcategoriaAction.delete}"image="imagens/error.gif"style="height: 19px; width: 18px"/></h:column><f:facetname="footer"><rich:datascrollerfor="subcategoria"/></f:facet></rich:dataTable></h:form><center><h:outputLinkvalue="GravaSubcategoria.jsf"><h:outputTextvalue="Nova Subcategoria"/></h:outputLink></center></div><divid="footer"align="right"><h:outputLinkvalue="imprimir.jsf"><h:outputTextvalue="Imprimir"/></h:outputLink> <h:outputLinkvalue="MenuPrincipal.jsf"><h:outputTextvalue="Home"/></h:outputLink></div></body></f:view></html>
ftabah
eu nem li tudo pq fallando sério, tanto código assim na tela desempolga, enfim…
você já tentou converter a lista pra static? esse tpo de erro acontece de vez em quando, às vezes (eu não me lembro em que momentos) a lista deve pertencer à classe e não à instância. se isso resolver avisa, ok?
abs
SilverFangs
estatico tambem não funciona, e também as outras classes que eu estou usando a datatable estão exibindo os dados tranquilamente. vou postar o codigo apenas dos objetos q estou usando. 8)