Boa noite,
Sou novata com jsf e preciso pegar o nome da imagem ao ser clicada (ou um link ao lado) e que o nome da imagem seja enviado para uma classe java, pois o nome da dela é o seu id.
Listo algumas imagens de acordo com o tipo de produto selecionado:
<h:dataTable value="#{buscaPorTipoMaisVotado.listaProdutos}" var="movel" border="1">
<h:column>
<h:graphicImage id="img" value="/imagens/#{movel.idProduto}.jpg" width="100" height="100"/>
</h:column>
</h:dataTable>
Alguém pode me ajudar?
Grata,
Viviane
Olá Vivi use o setPropertyActionListener para setar o valor assim:
<h:dataTable value="#{buscaPorTipoMaisVotado.listaProdutos}" var="movel" border="1">
<h:column>
<h:graphicImage id="img" value="/imagens/#{movel.idProduto}.jpg" width="100" height="100"/>
<f:setPropertyActionListener target="#{seuOutroBean.variavelSetada}" value="#{movel.idProduto}" />
</h:column>
</h:dataTable>
Assim quando o cara clicar na imagem o idProduto será enviado para a variavelSetada da sua classe, simples assim
Coloquei do jeito que você me falou, mas acho que estou fazendo mais alguma coisa errada, pois está retornando erro:
<html>
<body>
<f:view>
<h:outputText value="Moveis mais votados dos tipos selecionados: " />
<h:panelGrid columns="1" border="1">
<h:dataTable value="#{buscaPorTipoMaisVotado.listaProdutos}"
var="movel" border="1">
<h:column>
<h:graphicImage id="img" value="/imagens/#{movel.idProduto}.jpg"
width="100" height="100" />
<f:setPropertyActionListener target="#{mostrarMovel.idProduto}" value="#{movel.idProduto}" />
</h:column>
</h:dataTable>
</h:panelGrid>
</f:view>
</body>
</html>
Em “mostrarMovel” tenho o atributo idProduto, com seu devido getter e setter.
javax.servlet.jsp.JspException: null MessageFactory
at com.sun.faces.taglib.jsf_core.SetPropertyActionListenerTag.doStartTag(SetPropertyActionListenerTag.java:155)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_f_005fsetPropertyActionListener_005f0(buscaPorTipoMaisVotado_jsp.java:405)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_h_005fcolumn_005f0(buscaPorTipoMaisVotado_jsp.java:342)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_h_005fdataTable_005f0(buscaPorTipoMaisVotado_jsp.java:296)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_h_005fpanelGrid_005f0(buscaPorTipoMaisVotado_jsp.java:248)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_h_005fform_005f0(buscaPorTipoMaisVotado_jsp.java:178)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_f_005fview_005f0(buscaPorTipoMaisVotado_jsp.java:131)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspService(buscaPorTipoMaisVotado_jsp.java:94)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408)
at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:439)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:114)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
07/11/2011 18:27:04 com.sun.faces.lifecycle.LifecycleImpl phase
AVISO: executePhase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@16ea7549) threw exception
javax.faces.FacesException: org.apache.jasper.JasperException: An exception occurred processing JSP page /buscaPorTipoMaisVotado.jsp at line 17
14: <h:column>
15: <h:graphicImage id="img" value="/imagens/#{movel.idProduto}.jpg"
16: width="100" height="100" />
17: <f:setPropertyActionListener target="#{mostrarMovel.idProduto}" value="#{movel.idProduto}" />
18: </h:column>
19: </h:dataTable>
20: </h:panelGrid>
Stacktrace:
at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:413)
at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:439)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:114)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.jasper.JasperException: An exception occurred processing JSP page /buscaPorTipoMaisVotado.jsp at line 17
14: <h:column>
15: <h:graphicImage id="img" value="/imagens/#{movel.idProduto}.jpg"
16: width="100" height="100" />
17: <f:setPropertyActionListener target="#{mostrarMovel.idProduto}" value="#{movel.idProduto}" />
18: </h:column>
19: </h:dataTable>
20: </h:panelGrid>
Stacktrace:
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:567)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:456)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408)
... 22 more
Caused by: javax.servlet.ServletException: javax.servlet.jsp.JspException: null MessageFactory
at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:911)
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:840)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspService(buscaPorTipoMaisVotado_jsp.java:104)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
... 32 more
Caused by: javax.servlet.jsp.JspException: null MessageFactory
at com.sun.faces.taglib.jsf_core.SetPropertyActionListenerTag.doStartTag(SetPropertyActionListenerTag.java:155)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_f_005fsetPropertyActionListener_005f0(buscaPorTipoMaisVotado_jsp.java:405)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_h_005fcolumn_005f0(buscaPorTipoMaisVotado_jsp.java:342)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_h_005fdataTable_005f0(buscaPorTipoMaisVotado_jsp.java:296)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_h_005fpanelGrid_005f0(buscaPorTipoMaisVotado_jsp.java:248)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_h_005fform_005f0(buscaPorTipoMaisVotado_jsp.java:178)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_f_005fview_005f0(buscaPorTipoMaisVotado_jsp.java:131)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspService(buscaPorTipoMaisVotado_jsp.java:94)
... 35 more
07/11/2011 18:27:04 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/tcc] threw exception [An exception occurred processing JSP page /buscaPorTipoMaisVotado.jsp at line 17
14: <h:column>
15: <h:graphicImage id="img" value="/imagens/#{movel.idProduto}.jpg"
16: width="100" height="100" />
17: <f:setPropertyActionListener target="#{mostrarMovel.idProduto}" value="#{movel.idProduto}" />
18: </h:column>
19: </h:dataTable>
20: </h:panelGrid>
Stacktrace:] with root cause
javax.servlet.jsp.JspException: null MessageFactory
at com.sun.faces.taglib.jsf_core.SetPropertyActionListenerTag.doStartTag(SetPropertyActionListenerTag.java:155)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_f_005fsetPropertyActionListener_005f0(buscaPorTipoMaisVotado_jsp.java:405)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_h_005fcolumn_005f0(buscaPorTipoMaisVotado_jsp.java:342)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_h_005fdataTable_005f0(buscaPorTipoMaisVotado_jsp.java:296)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_h_005fpanelGrid_005f0(buscaPorTipoMaisVotado_jsp.java:248)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_h_005fform_005f0(buscaPorTipoMaisVotado_jsp.java:178)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspx_meth_f_005fview_005f0(buscaPorTipoMaisVotado_jsp.java:131)
at org.apache.jsp.buscaPorTipoMaisVotado_jsp._jspService(buscaPorTipoMaisVotado_jsp.java:94)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408)
at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:439)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:114)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Arrumei e coloquei o seguinte código:
<h:dataTable value="#{buscaPorTipoMaisVotado.listaProdutos}"
var="movel" border="1">
<h:column>
<h:commandLink value="Imgagem #{movel.idProduto}" action="#{mostrarMovel.mostrarMovel}">
<f:setPropertyActionListener
target="#{mostrarMovel.idProduto}" value="#{movel}" />
</h:commandLink>
</h:column>
</h:dataTable>
mas ele simplesmente não faz nada, o que estou fazendo de errado?