ERRO ao instanciar uma classe pelo Managed Bean

28/04/2011

0

Galera, o problema é o seguite: tenho uma página "cd_qualificacao.xhtml" que a estrutura é mais ou menos assim:

?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
<ui:composition template="template.xhtml">
    <ui:define name="conteudo">
        <h:form>
            <link rel="stylesheet" type="text/css" href="CSS/dtUsuario.css" />
            <a4j:keepAlive beanName="qualificacaoForm"></a4j:keepAlive>
            <a4j:keepAlive beanName="recebimentoForm"></a4j:keepAlive>
            ...
        </h:form>
    </ui:define>
</ui:composition>
</html>

Pois bem, ao chegar nessa parte: <a4j:keepAlive beanName="qualificacaoForm"></a4j:keepAlive>
o java me retorna o seguinte erro:

28/04/2011 10:28:48 com.sun.facelets.FaceletViewHandler handleRenderException
SEVERE: Error Rendering View[/cd_qualificacao.xhtml]
com.sun.faces.mgbean.ManagedBeanCreationException: Cant instantiate class: br.org.isgh.compras.forms.QualificacaoForm.
    at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:191)
    at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:106)
    at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:368)
    at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:230)
    at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
    at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
    at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:69)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    at com.sun.faces.application.ValueBindingValueExpressionAdapter.getValue(ValueBindingValueExpressionAdapter.java:113)
    at org.ajax4jsf.taglib.html.facelets.KeepAliveHandler.apply(KeepAliveHandler.java:76)
    at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
    at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:360)
    at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190)
    at com.sun.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:64)
    at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:136)
    at com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:337)
    at com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:307)
    at com.sun.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:68)
    at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
    at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
    at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
    at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
    at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
    at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
    at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
    at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
    at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:116)
    at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
    at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
    at com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95)
    at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:526)
    at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:569)
    at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
    at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
    at java.util.ArrayList.RangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at br.org.isgh.compras.forms.QualificacaoForm.<init>(QualificacaoForm.java:43)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:186)
    ... 56 more

Procurei no Google mas não encontrei a solução

OBS: a configuração dessa classe está aparentemente ok no faces-config.xml.

Barcelos.java

Barcelos.java

Responder

Posts

28/04/2011

Davi Costa

Pelo log o erro se encontra em QualificacaoForm.java:43).
Posta essa classe para a gente dar uma olhada.
Nunca havia colocado dois:
<a4j:keepAlive beanName="qualificacaoForm"></a4j:keepAlive>
            <a4j:keepAlive beanName="recebimentoForm"></a4j:keepAlive>

Mas testei aqui em uma app minha e funcionou sem problemas, realmente parece erro na sua própria classe.

Att Davi

Responder

28/04/2011

Barcelos.java

package br.org.isgh.compras.forms;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.context.FacesContext;
import br.org.isgh.compras.beans.Qualificacao;
import br.org.isgh.compras.beans.QualificacaoQuestionario;
import br.org.isgh.compras.beans.Questionario;
import br.org.isgh.compras.beans.Recebimento;
import br.org.isgh.compras.facade.AfFacade;
import br.org.isgh.compras.facade.QualificacaoFacade;
import br.org.isgh.compras.facade.QuestionarioFacade;
import br.org.isgh.compras.facade.impl.AfFacadeImpl;
import br.org.isgh.compras.facade.impl.QualificacaoFacadeImpl;
import br.org.isgh.compras.facade.impl.QuestionarioFacadeImpl;
import br.org.isgh.compras.util.MessagesUtil;

public class QualificacaoForm implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    //INSTANCIA 2
    private Qualificacao qualificacao = new Qualificacao();
    private QualificacaoFacade qualificacaoFacade = new QualificacaoFacadeImpl();
    private Questionario questionario = new Questionario();
    private QuestionarioFacade questionarioFacade = new QuestionarioFacadeImpl();
    private List<Qualificacao> qualificacoes;
    private final int QTDE_PERGUNTAS = 6;
    Recebimento recebimento = new Recebimento();

    public     QualificacaoForm() {
        QuestionarioFacade qFacade = new QuestionarioFacadeImpl();
        List<Questionario> quest = qFacade.listar();
        
        List<QualificacaoQuestionario> qqs = new ArrayList<QualificacaoQuestionario>(QTDE_PERGUNTAS);
        for (int i = 0; i < QTDE_PERGUNTAS; i++) {
            QualificacaoQuestionario qq = new QualificacaoQuestionario();
            qq.setQualificacao(qualificacao);
            qq.setQuestionario(quest.get(i));
            qqs.add(qq);
        }
        qualificacao.setQualificacaoQuestionarios(qqs);
    }
    
    public String inserir() {
        try {
            List<QualificacaoQuestionario> qq = qualificacao.getQualificacaoQuestionarios();
                
            for (QualificacaoQuestionario qualificacaoQuestionario : qq) {
                if (qualificacaoQuestionario.getFlgPontuacao().booleanValue() == true) {
                    qualificacaoQuestionario.setVlrPontuacao( qualificacaoQuestionario.getQuestionario().getVlrPositivo());
                } else {
                    qualificacaoQuestionario.setVlrPontuacao( qualificacaoQuestionario.getQuestionario().getVlrNegativo());
                    
                    if (qualificacaoQuestionario.getDscJustificativa() == null || qualificacaoQuestionario.getDscJustificativa().equals("")) {
                        MessagesUtil.inserirMensagem("Justificativa da questão "+qualificacaoQuestionario.getQuestionario().getIsnQuestionario()+" não pode ser vazia");
                    }
                }
            }
            
            if (!FacesContext.getCurrentInstance().getMessages().hasNext()) {
                qualificacaoFacade.inserir(qualificacao,recebimento);
                finalizaNF();
                MessagesUtil.inserirMensagem("  Processo qualificado e finalizado com sucesso!");
                return "csRecebimento";
                //MessagesUtil.inserirMensagem("Cadastro realizado com sucesso.");
            }
        } catch (RuntimeException e) {
            MessagesUtil.inserirMensagem("Erro ao inserir Qualificação.");
            e.printStackTrace();
        }
        return null;
    }
    
    public String finalizaNF(){
        try{
            AfFacade afFacade = new AfFacadeImpl();
            afFacade.finalizaNF(recebimento);
            
        } catch (RuntimeException e){
            e.printStackTrace();
            throw e;
        }
        return null;
    }
    
    public Qualificacao getQualificacao() {
        return qualificacao;
    }

    public void setQualificacao(Qualificacao qualificacao) {
        this.qualificacao = qualificacao;
    }

    public QualificacaoFacade getQualificacaoFacade() {
        return qualificacaoFacade;
    }

    public void setQualificacaoFacade(QualificacaoFacade qualificacaoFacade) {
        this.qualificacaoFacade = qualificacaoFacade;
    }

    public Questionario getQuestionario() {
        return questionario;
    }

    public void setQuestionario(Questionario questionario) {
        this.questionario = questionario;
    }

    public QuestionarioFacade getQuestionarioFacade() {
        return questionarioFacade;
    }

    public void setQuestionarioFacade(QuestionarioFacade questionarioFacade) {
        this.questionarioFacade = questionarioFacade;
    }

    public List<Qualificacao> getQualificacoes() {
        return qualificacoes;
    }

    public void setQualificacoes(List<Qualificacao> qualificacoes) {
        this.qualificacoes = qualificacoes;
    }

    public Recebimento getRecebimento() {
        return recebimento;
    }

    public void setRecebimento(Recebimento recebimento) {
        this.recebimento = recebimento;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }

    public int getQTDE_PERGUNTAS() {
        return QTDE_PERGUNTAS;
    }

    public QualificacaoForm(Qualificacao qualificacao,
            QualificacaoFacade qualificacaoFacade, Questionario questionario,
            QuestionarioFacade questionarioFacade,
            List<Qualificacao> qualificacoes, Recebimento recebimento) {
        super();
        this.qualificacao = qualificacao;
        this.qualificacaoFacade = qualificacaoFacade;
        this.questionario = questionario;
        this.questionarioFacade = questionarioFacade;
        this.qualificacoes = qualificacoes;
        this.recebimento = recebimento;
    }

}

Responder

28/04/2011

Davi Costa

Cara debuga esse construtor, aparentemente o problema parece estar aí:


public     QualificacaoForm() {
        QuestionarioFacade qFacade = new QuestionarioFacadeImpl();
        List<Questionario> quest = qFacade.listar();
       
        List<QualificacaoQuestionario> qqs = new ArrayList<QualificacaoQuestionario>(QTDE_PERGUNTAS);
        for (int i = 0; i < QTDE_PERGUNTAS; i++) {
            QualificacaoQuestionario qq = new QualificacaoQuestionario();
            qq.setQualificacao(qualificacao);
            qq.setQuestionario(quest.get(i));
            qqs.add(qq);
        }
        qualificacao.setQualificacaoQuestionarios(qqs);
    }




Att Davi
Responder

28/04/2011

Barcelos.java

Eu comentei o trecho que você destacou como sendo provável causa do problema e debuguei, e ele gerou outro erro diferente:

SEVERE: JSF will be unable to create managed bean qualificacaoForm when it is requested.  The following problems where found:
     - Managed bean class br.org.isgh.compras.forms.QualificacaoForm for managed bean qualificacaoForm doesnt declare a public no-argument constructor.
28/04/2011 14:38:14 com.sun.facelets.FaceletViewHandler handleRenderException
SEVERE: Error Rendering View[/cd_qualificacao.xhtml]
com.sun.faces.mgbean.ManagedBeanCreationException: Unable to create managed bean qualificacaoForm.  The following problems were found:
     - Managed bean class br.org.isgh.compras.forms.QualificacaoForm for managed bean qualificacaoForm doesnt declare a public no-argument constructor.
    at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:204)
    at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
    at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
    at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:69)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    at com.sun.faces.application.ValueBindingValueExpressionAdapter.getValue(ValueBindingValueExpressionAdapter.java:113)
    at org.ajax4jsf.taglib.html.facelets.KeepAliveHandler.apply(KeepAliveHandler.java:76)
    ...

28/04/2011 14:38:14 com.sun.faces.lifecycle.Phase doPhase
SEVERE: JSF1054: (Phase ID: RENDER_RESPONSE 6, View ID: /cd_qualificacao.xhtml) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@d7cf62]
28/04/2011 14:38:14 org.ajax4jsf.webapp.BaseXMLFilter doXmlFilter
SEVERE: Exception in the filter chain
javax.servlet.ServletException: Unable to create managed bean qualificacaoForm.  The following problems were found:
     - Managed bean class br.org.isgh.compras.forms.QualificacaoForm for managed bean qualificacaoForm doesnt declare a public no-argument constructor.
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:270)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    ...

Caused by: com.sun.faces.mgbean.ManagedBeanCreationException: Unable to create managed bean qualificacaoForm.  The following problems were found:
     - Managed bean class br.org.isgh.compras.forms.QualificacaoForm for managed bean qualificacaoForm doesnt declare a public no-argument constructor.
    at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:204)
    at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
    at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
    at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:69)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    at com.sun.faces.application.ValueBindingValueExpressionAdapter.getValue(ValueBindingValueExpressionAdapter.java:113)
    at org.ajax4jsf.taglib.html.facelets.KeepAliveHandler.apply(KeepAliveHandler.java:76)
    at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
    at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:360)

Responder

28/04/2011

Davi Costa

Barcelos este erro é o seguinte o JSF exige um construtor padrão sem argumentos, para seu Managed Bean.
Como vc tem um construtor com parâmetros, a JVM não criou para vc um construtor padrão sem parâmetros. no lugar de comentar o construtor inteiro, comente só o que tem dentro dele....
mas daí vc pode ter algum nullpointer na hr de tentar abrir sua página..
o ideal é vc debugar e ver qual linha kebra sem comentar nada de código... para vc entender o q está realmente acontecendo.. debug debug

Att Davi
Responder

28/04/2011

Barcelos.java

cara, fiz o que tu disse e deu certo, sem erros, dexei o construtor só assim:

public QualificacaoForm() {
        super();
}

então o detalhe é tinha algo de errado naquele código, vou criar outra solução.
Obrigado pela atenção.

Espero poder ajudar aqui no forum tb.
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