(Resolvido)JSF setar atributo de managed bean para gerar lista
5 respostas
alexegidio
Bom dia, amigos!
Estou iniciando em JSF facelets, venho tentando desenvolver uma simples listagem, mas tô encontrando muitos problemas.
Oque quero é:
Tenho um objeto Assunto que possui uma Categoria, O AssuntoBean possui um atributo idCategoria e um método que lista somente os Assuntos cujo idCategoria sejam iguais a Categoria.id
Então no momento em que fosse exibir a lista eu passaria este idCategoria como parâmetro e na teoria tudo daria certo, O erro é que não estou conseguindo setar esta propriedade no bean já tentei <c:set> . Devo estar entendendo a lógica do JSF erradamente
este é o código do meu bean Assunto:
RAPAZ, não entendi muito bem oque vc quer,mas tenta usar ListDataModel no lugar de List…tb sou iniciante em JSF…
marcosharbs
é mais facil vc usar um dataTable
vc tem uam lista e quer percorrer ela montado uma tabela dinamicamente
é isso ?
use a tag dataTabel do jsf
ex:
aqui é uma funcao para carregar a lista qu eu uso:
publicvoidcarregalistaItensPorProduto()throwsSQLException{Map<String,Object>itens=newHashMap<String,Object>();listaItensPorProduto=newArrayList<Map<String,Object>>();Stringcod_produto=getCodigo_produto();Stringsql="select * from item where cd_produto = ?";PreparedStatementst=con.obterConexao().prepareStatement(sql);st.setString(1,cod_produto);ResultSetrs=st.executeQuery();while(rs.next()){itens=newHashMap<String,Object>();itens.put("codigo",rs.getString("cd_item"));itens.put("nome",rs.getString("descricao"));itens.put("preco",DINHEIRO_REAL.format(rs.getDouble("preco")));listaItensPorProduto.add(itens);}}
e aqui como ficaria na camada de view:
<h:dataTableborder="2"value="#{compras.listaItensPorProduto}"var="itens"><h:column><f:facetname="header"><h:outputTextvalue="Codigo do Item"/></f:facet><h:outputTextvalue="#{itens.codigo}"/></h:column><h:column><f:facetname="header"><h:outputTextvalue="Nome do Item"/></f:facet><h:commandLinkvalue="#{itens.nome}"action="#{compras.redirecionaDetalhesProduto}"onmousedown="setItem('#{itens.codigo}')"/></h:column><h:column><f:facetname="header"><h:outputTextvalue="Preço do Item"/></f:facet><h:outputTextvalue="#{itens.preco}"/></h:column><h:column><h:commandButtonimage="images\button_cart-add.gif"action="#{compras.redirecionaCarrinho}"onmousedown="setItem('#{itens.codigo}')"/></h:column></h:dataTable>
alexegidio
Valeu, marcos, obrigado pela direção, agora sei por onde caminhar
abelgomes
Com o ListDataModel fica mais simples…sem falar que é uma classe feita para isso…
publicjava.util.ListtodosVendedores(){
Sessionsession=core.HibernateUtil.currentSession();org.hibernate.Queryquery=session.createQuery(" select vendedor "+" from "+" Vendedor as vendedor ");returnquery.list();}
e na jsp fica como o nosso amigo marcos mostrou…
<h:dataTablewidth="75%"headerClass="ordersHeader"rowClasses="eventRon"cellspacing="0"value="#{actionVendedor.listaVendedor}"var="vdn"border="1"><h:column><f:facetname="header"><h:outputTextvalue="ID "/></f:facet><h:outputTextvalue="#{vdn.id}"/></h:column><h:column><f:facetname="header"><h:outputTextvalue="Nome"/></f:facet><h:outputTextvalue="#{vdn.nome}"/></h:column><h:column><f:facetname="header"><h:outputTextvalue="Comissão em %"/></f:facet><h:outputTextvalue="#{vdn.comissao}"/></h:column><h:column><f:facetname="header"><h:outputTextvalue="Editar"/></f:facet><h:commandLinkvalue="Editar"immediate="true"action="#{actionVendedor.editar}"></h:commandLink></h:column><h:column><f:facetname="header"><h:outputTextvalue="Excluir"/></f:facet><h:commandLinkimmediate="true"ondblclick="submit()"value="Excluir"action="#{actionVendedor.deletar}"></h:commandLink></h:column></h:dataTable>
agora vc V qual se adequa melhor ao seu problema… espero ter ajudado …
alexegidio
Então amigos depois de ralar uns três dias tentando encontrar a solução quero comunicar a todos que resolvi o problema desse jeito:
No bean:
Dessa forma eu tenho uma Lista de categoria e dentro dela seus respectivos assuntos. As coisas as vezes são tão simples e a gente complica né
Valeu, Abel e Marcos pela ajuda !!!