Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Primefaces, como passar o objeto como parâmetro no xhtml

Esta dando este erro no console.

Console

ago 15, 2016 9:04:19 PM com.sun.faces.lifecycle.InvokeApplicationPhase execute
ADVERTÊNCIA: /homeAluno.xhtml @24,58 actionListener="#{alunoBean.comprarCurso(curso)}": java.lang.IllegalArgumentException: Parameter value [1] did not match expected type [java.util.Collection]
javax.el.ELException: /homeAluno.xhtml @24,58 actionListener="#{alunoBean.comprarCurso(curso)}": java.lang.IllegalArgumentException: Parameter value [1] did not match expected type [java.util.Collection]
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)
    at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:147)
    at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:814)
    at javax.faces.component.UICommand.broadcast(UICommand.java:300)
    at javax.faces.component.UIData.broadcast(UIData.java:1108)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1419)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:44)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: Parameter value [1] did not match expected type [java.util.Collection]
    at org.hibernate.ejb.AbstractQueryImpl.validateParameterBinding(AbstractQueryImpl.java:375)
    at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:348)
    at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:375)
    at br.com.caelum.livraria.dao.UsuarioDao.cursoJaCadastrado(UsuarioDao.java:81)
    at br.com.caelum.livraria.bean.AlunoBean.comprarCurso(AlunoBean.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    ... 33 more

ago 15, 2016 9:04:19 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: java.lang.IllegalArgumentException: Parameter value [1] did not match expected type [java.util.Collection]
    at org.hibernate.ejb.AbstractQueryImpl.validateParameterBinding(AbstractQueryImpl.java:375)
    at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:348)
    at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:375)
    at br.com.caelum.livraria.dao.UsuarioDao.cursoJaCadastrado(UsuarioDao.java:81)
    at br.com.caelum.livraria.bean.AlunoBean.comprarCurso(AlunoBean.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:147)
    at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:814)
    at javax.faces.component.UICommand.broadcast(UICommand.java:300)
    at javax.faces.component.UIData.broadcast(UIData.java:1108)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1419)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:44)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

homeAluno.xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

<ui:composition template="_templateProfessor.xhtml">

    <ui:define name="titulo">
        <p:outputPanel>Home Professor</p:outputPanel>
    </ui:define>

    <ui:define name="conteudo">

        <p:carousel value="#{crudeCursoBean.cursos}" headerText="Cursos"
            var="curso" itemStyle="text-align:center" responsive="true">
            <p:panelGrid columns="2" style="width:100%;margin:10px 0px"
                columnClasses="label,value" layout="grid"
                styleClass="ui-panelgrid-blank">

                <p:commandButton value="Comprar"
                    actionListener="#{alunoBean.comprarCurso(curso)}" />

                <h:outputText value="Id:" />
                <h:outputText value="#{curso.id}" />

                <h:outputText value="Titulo:" />
                <h:outputText value="#{curso.titulo}" />

                <h:outputText value="Preço:" />
                <h:outputText value="#{curso.valor}">
                    <f:convertNumber type="currency" pattern="R$ #0.00"
                        currencySymbol="R$" locale="pt_BR" />
                </h:outputText>

                <h:outputText value="Descrição" />
                <h:outputText value="#{curso.descricao}" />

            </p:panelGrid>

            <p:dataList id="listaCapitulos"
                value="#{homeProfessorBean.getListaCapitulo(curso)}" var="capitulo"
                type="ordered">
                <f:facet name="header">
                    Capitulos
                </f:facet>
                #{capitulo}

                </p:dataList>

        </p:carousel>
    </ui:define>

</ui:composition>

</html>

AlunoBean.class

package br.com.caelum.livraria.bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import br.com.caelum.livraria.dao.CursoDao;
import br.com.caelum.livraria.dao.UsuarioDao;
import br.com.caelum.livraria.modelo.Curso;
import br.com.caelum.livraria.modelo.Usuario;

@ManagedBean
@ViewScoped
public class AlunoBean {

    List<Curso> cursos = new ArrayList<Curso>();

    public void comprarCurso(Curso curso) {
        FacesContext context = FacesContext.getCurrentInstance();
        Usuario usuarioAtual = (Usuario) context.getExternalContext().getSessionMap().get("usuarioLogado");
        boolean cadastrado = new UsuarioDao().cursoJaCadastrado(curso);

        if (cadastrado) {
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro!", "Aluno já possui Curso."));
        } else {
            cursos.add(curso);
            usuarioAtual.setCursos(cursos);
            new UsuarioDao().adicionaCursoAoUsuario(usuarioAtual);
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Parabéns!", "Compra Realizada."));
        }

    }
}
1 resposta
solução!

Opa,

A sua pilha de erro indica que o problema está aqui => UsuarioDao.cursoJaCadastrado. No método cursoJaCadastrado no UsuarioDao, ele espera um tipo de parâmetro na query e vc ta passando outro. Dê uma olhada nesse ponto..

E lembra sempre de olhar a pilha da exception, ela tem várias dicas e também sendo mais específico, pode nos ajudar a te ajudar :).