Lista todos produtos por categoria

28/08/2011

0

Tó fazendo o Curso loja virtual
Dyego tem como voçe fazer um exemplo para lista todos os produtos de uma categoria , baseado no curso loja virtual , o exemplo que tenho fiz um menu lateral que mostra todas categoria então quando dou um click na categoria quero que mostre todos produtos em outra pagina no caso - produtosporcategoria.faces , você entende o que preciso agradeço se puder ajudar. 
 
Erlon Carlos

Erlon Carlos

Responder

Posts

31/08/2011

Robson Teixeira

Posso ter da uma ideia que acho interressante??? usando a tag do JSF2 o você pode passar para a sua managedBean o atributo que é o identificador da categoria e montar uma query que retorna os produtos daquela categoria. espero ter ajudado att robson
Responder

31/08/2011

Erlon Carlos

Olá garoto primeiro obrigado por tentar ajudar .
Tó fazendo esta query no meu bean de sessão 

public List<Noticias> listaNoticiasDaCategoriaSession() {
  return getList(Noticias.class, "SELECT n FROM Noticias n where c.catNoticia.id = ?1 "); }
e no meu  bean gerenciador jsf tó fazendo assim
public List<Noticias> todasNoticiasDaCategoria(){   return noticiaBean.listaNoticiasDaCategoriaSession(); }
você pode dizer se o meu select está correto , por que quando compilo da este erro.
javax.el.PropertyNotFoundException: /NoticiasPorCategoria.xhtml @32,191 value="#{noticiasFaces.todasNoticiasDaCategoria}": The class 'br.com.eboxbrasil.face.org$jboss$weld$bean-web-ManagedBean-class_br$com$eboxbrasil$face$NoticiasFaces_$$_WeldClientProxy' does not have the property 'todasNoticiasDaCategoria'.
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIData.getValue(UIData.java:731)
at javax.faces.component.UIData.getDataModel(UIData.java:1798)
at javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:484)
at javax.faces.component.UIData.setRowIndex(UIData.java:473)
at org.primefaces.component.datagrid.DataGridRenderer.encodeTable(DataGridRenderer.java:156)
at org.primefaces.component.datagrid.DataGridRenderer.encodeMarkup(DataGridRenderer.java:76)
at org.primefaces.component.datagrid.DataGridRenderer.encodeEnd(DataGridRenderer.java:52)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)


Responder

01/09/2011

Davi Costa

Onde vc está passando esse parametro da query, detalhe amarelo:

return getList(Noticias.class, "SELECT n FROM Noticias n where c.catNoticia.id = ?1 ");

Tem que passar algum valor para ele. Além disso a query tem um erro, detalhe em vermelho, de onde vc tirou esse alias "c"?

att Davi Costa
Responder

01/09/2011

Robson Teixeira

e olhe também se você está setando os camposem sua managedBean corretamente pois na exception
javax.el.PropertyNotFoundException
Responder

07/09/2011

Erlon Carlos

Olá galera tenho duas tabelas que se relacionam CATEGORIA e NOTICIAS onde uma categoria tem varias noticias alguém pode me ajudar a fazer este select para que eu consiga mostrar todas noticias de um a determinada categoria.
Tó tentando fazer isto aqui mais não da certo !!!!Alguém pode me ajudar não sei mais o que fazer

 public List<Noticias> NoticiasPorCategoriaSessionTeste() {
  return getList(Noticias.class, "SELECT n FROM Noticias n, CategoriaNoticias c  where n.catNoticia  = c.id");                               }
Responder

07/09/2011

Davi Costa

return getList(Noticias.class, "SELECT n FROM Noticias n where n.catNoticia.id  = ?");
Bom obviamente eu não sei como está a implentação do seu método getList, porque vc precisa de um jeito de passar um valor para ?  conforme o id da sua categoria.

att Davi      
Responder

08/09/2011

Erlon Carlos

veja meu getList 

public List getList(Class classToCast, String query, Object... values) {
  Query qr = createQuery(query, values);
  return qr.getResultList();

}
Responder

08/09/2011

Erlon Carlos

getList correto
public <T> List<T> getList(Class<T> classToCast, String query, Object... values) {  Query qr = createQuery(query, values);  return qr.getResultList();
 }
 
Responder

08/09/2011

Davi Costa

Sendo assim, que tal:
return getList(Noticias.class, "SELECT n FROM Noticias n where n.catNoticia.id  = ?", id);
Sendo que esse id é o id da Categoria, que você quer usar como filtro.
Talvez a forma como está a query não funcione, preciso da implementação do método createQuery(query, values); para validar o hql "SELECT n FROM Noticias n where n.catNoticia.id  = ?", só essa passagem de parâmetro que vai alterar dependendo da implementção do método solicitado.

att Davi
Responder

09/09/2011

Erlon Carlos

Ainda não tive tempo para implementar a sua nova sugestão este é o método 
private Query createQuery(String query, Object[] values) {  Query qr = em.createQuery(query);  if (values != null) {   for (int i = 0; i < values.length; i++) {
    Object object = values[i];    qr.setParameter(i + 1, object);   }

  }  return qr; }
Responder

09/09/2011

Davi Costa

Sendo assim vai ficar assim:
return getList(Noticias.class, "SELECT n FROM Noticias n where n.catNoticia.id  = :id", id);

Att Davi
Responder

09/09/2011

Dyego Carmo

Olá !

Conseguiu resolver ? Se sim , por favor poderia fechar o chamado ?


Valeu !!!
Responder

09/09/2011

Erlon Carlos


  Veja o que tó fazendo 
método Session
 public List<Noticias> noticiasPorCategoriaSessionTeste(int id) {
  return getList(Noticias.class, "SELECT n FROM Noticias n where n.catNoticia.id  = :id", id); }

método faces
public List<Noticias> noticiasPorCategoriasTeste(int id){     return noticiaBean.noticiasPorCategoriaSessionTeste(id);     }
e chamada na página com o s componentes

<ppctu:dataGrid var="item" value="#{noticiasFaces.noticiasPorCategoriasTeste}" columns="2"                        paginatorPosition="bottom" rows="8" paginator="true" effect="true" paginatorTemplate="  ">         <ppctu:column>          <ppctu:panel header="Categoria - #{item. }" style="text-align:center; font-size: x-small  ">           <h:panelGrid columns="1"  style="width:100%" >                       <h:commandLink action="#{noticiasFaces.noticiasDetalhesFaces()}" title="Leia mais !!!" style="text-align: center; font-size: x-small" >                           <br/>            <f:setPropertyActionListener target="#{noticiasFaces.selectedBean}" value="#"/>             #{item.titulo}            </h:commandLink>
           </h:panelGrid>                      </ppctu:panel>
         </ppctu:column>
        </ppctu:dataGrid>                             </h:form>
não consigo chamar o atributo no caso o relacionado  da categoria com a noticia   item.catNoticia.id





       
         
         
         
           
             
           
             



           
         
       


       


       
Responder

27/09/2011

Dyego Carmo

mas vc chegou a digitar este atributo ? no seu fonte está apenas #{item.} , teria que ser #{item.propriedade}

Valeu !
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar