Nullpointer ao inserir no banco

11 respostas
rafa120

Bom dia a todos!

Estou tentando criar um projeto para aprendizado com hibernate e JSF.

Estou com problema quando vou adicionar um novo registro pela página jsf
já tentei muita coisa, mas ainda não consegui, quem puder dar uma ajuda ai valeu

ele retorna este erro:

java.lang.NullPointerException
	at java.lang.Class.isAssignableFrom(Native Method)
	at org.apache.el.util.ReflectionUtil.isAssignableFrom(ReflectionUtil.java:319)
	at org.apache.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:185)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:257)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	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:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	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:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

Eu li que pode ser problema de lib, por ex. usar EL (da apache) ou outra coisa assim incompativel com tomcat ou primefaces
mas como seria por exemplo EL da apache compativel com tomcat? …

11 Respostas

K

Somente com esse erro fica muito genérico,
cola sua pagina xhtml, seu managedBean para
tentar visualizar.

rafa120

Opa, blz

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://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Changes</title>
    </h:head>
    <h:body>
        <center><h1>Changes</h1></center><br/>
        <h:form prependId="false">
                          
            <h:outputLabel for="nr_change" value="Nr. Change: " />
            <h:inputText id="nr_change" value="#{changesController.changes.nr_change}"/><br/>  
            
            <h:outputLabel for="cliente" value="Cliente: " />
            <h:inputText id="cliente" value="#{changesController.changes.cliente}"/><br/> 
            
            <h:outputLabel for="status" value="Status: " />
            <h:inputText id="status" value="#{changesController.changes.status}"/><br/> 
            
            <h:outputLabel for="tipo_atv" value="Tipo atividade: " />
            <h:inputText id="tipo_atv" value="#{changesController.changes.tipo_atv}"/><br/>  
            
            <h:outputLabel for="inst" value="Inst: " />
            <h:inputText id="inst" value="#{changesController.changes.inst}"/><br/>  
            
            <h:outputLabel for="descricao" value="Descrição: " />
            <h:inputText id="descricao" value="#{changesController.changes.descricao}"/><br/>  
            
            <h:outputLabel for="usuario_create" value="Criado por: " />
            <h:inputText id="usuario_create" value="#{changesController.changes.usuario_create}"/><br/>   
            
            <h:outputLabel for="feedback" value="Feedback: " />
            <h:inputText id="feedback" value="#{changesController.changes.feedback}"/><br/>
            
            <h:commandButton value="Salva" id="salva" actionListener="#{changesController.adicionar(actionEvent)}"/>         
             
            <h:dataTable value="#{changesController.listaChanges}" var="changes">
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Nr. Change"/>
                    </f:facet>
                    <h:outputText value="#{changes.nr_change}"/>
                </h:column>
                
                 <h:column>
                    <f:facet name="header">
                        <h:outputText value="Cliente"/>
                    </f:facet>
                    <h:outputText value="#{changes.cliente}"/>
                </h:column>
                
                 <h:column>
                    <f:facet name="header">
                        <h:outputText value="Status"/>
                    </f:facet>
                    <h:outputText value="#{changes.status}"/>
                </h:column>
            
            </h:dataTable>
        </h:form>
    </h:body>
</html>

managedbean

import br.com.changes.dao.ChangesDao;
import br.com.changes.dao.InterfaceChanges;
import br.com.changes.model.Changes;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;


@ManagedBean
@SessionScoped
public class ChangesController {
    
    private Changes changes;
    private DataModel listaChanges;
    
     public DataModel getListaChanges() {
        List<Changes> lista = new ChangesDao().list();
        listaChanges = new ListDataModel(lista);
        return listaChanges;
    }

    public Changes getChanges() {
        if(this.changes==null){
            this.changes = new Changes();
        }
        return changes;
    }

    public void setChanges(Changes changes) {
        this.changes = changes;
    }

      
    public void prepararAdicionarChange(ActionEvent actionEvent){
        changes = new Changes();
    }
    
    public void prepararAlterarChange(ActionEvent actionEvent){
        changes = (Changes)(listaChanges.getRowData());
    }
    
    public void adicionar(ActionEvent actionEvent){
             
        InterfaceChanges dao = new ChangesDao();
        dao.salvar(changes);
        
    }
    
    public void alterar(ActionEvent actionEvent){
        InterfaceChanges dao = new ChangesDao();
        dao.atualizar(changes);
    }
    
    public String excluir(){
        Changes change = (Changes)(listaChanges.getRowData());
        InterfaceChanges dao = new ChangesDao();
        dao.remover(change);
        return "index";
    }
    
}
K
<h:commandButton value="Salva" id="salva" actionListener="#{changesController.adicionar(actionEvent)}"/>

pode substituir por

<h:commandButton value="Salva" id="salva" action="#{changesController.adicionar}" process="@form" update="@form"/>

nao precisas nem usar o actionListener, nao estas nem utilizando o
parametro enviado para o bean

public void adicionar(ActionEvent actionEvent){  
           //perceba que vc nao usou o actionEvent para nada.
        InterfaceChanges dao = new ChangesDao();  
        dao.salvar(changes);  
          
    }
rafa120

hmm…ele da erro no xhtml… q estranho… da erro no <?xml version

Error Parsing /index.xhtml: Error Traced[line: 1] The processing instruction target matching “[xX][mM][lL]” is not allowed.

javax.faces.view.facelets.FaceletException: Error Parsing /index.xhtml: Error Traced[line: 1] The processing instruction target matching "[xX][mM][lL]" is not allowed.
	at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:425)
	at com.sun.faces.facelets.compiler.SAXCompiler.doMetadataCompile(SAXCompiler.java:408)
	at com.sun.faces.facelets.compiler.Compiler.metadataCompile(Compiler.java:130)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory.createMetadataFacelet(DefaultFaceletFactory.java:327)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory.access$200(DefaultFaceletFactory.java:93)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:166)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:164)
	at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:94)
	at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:89)
	at com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at com.sun.faces.util.ExpiringConcurrentCache.get(ExpiringConcurrentCache.java:114)
	at com.sun.faces.facelets.impl.DefaultFaceletCache.getViewMetadataFacelet(DefaultFaceletCache.java:143)
	at com.sun.faces.facelets.impl.DefaultFaceletCache.getViewMetadataFacelet(DefaultFaceletCache.java:62)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:260)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:209)
	at com.sun.faces.application.view.ViewMetadataImpl.createMetadataView(ViewMetadataImpl.java:114)
	at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:233)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	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:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
K

qual a versão do jar do JSF que estás utilizando?

kcobainnn

Tente o seguinte:

<h:commandButton value="Salva" id="salva" action="#{changesController.adicionar}"/>

E no seu bean:

public void adicionar(){
      InterfaceChanges dao = new ChangesDao();    
      dao.salvar(changes);       
}

Caso não dê certo, debugue e veja o que você está passando no changes e veja se o seu dao está sendo instanciado corretamente.

K

kcobainnn:
Tente o seguinte:

<h:commandButton value="Salva" id="salva" action="#{changesController.adicionar}"/>

E no seu bean:

public void adicionar(){
      InterfaceChanges dao = new ChangesDao();    
      dao.salvar(changes);       
}

Caso não dê certo, debugue e veja o que você está passando no changes e veja se o seu dao está sendo instanciado corretamente.

Será q vc não repetiu o que eu falei acima?

kcobainnn

kleberdamasco:
kcobainnn:
Tente o seguinte:

<h:commandButton value="Salva" id="salva" action="#{changesController.adicionar}"/>

E no seu bean:

public void adicionar(){
      InterfaceChanges dao = new ChangesDao();    
      dao.salvar(changes);       
}

Caso não dê certo, debugue e veja o que você está passando no changes e veja se o seu dao está sendo instanciado corretamente.

Será q vc não repetiu o que eu falei acima?

Desculpe, mas acho que ele não entendeu a parte que ele deveria tirar o ActionEvent do parâmetro do método! E outra, acho que a melhor forma de descobrir é debugar p/ saber o que está passando na hora de gravar no banco! :?

rafa120

Eu realmente tinha esquecido de tirar o ActionEvent, mas retirei e mesmo assim retorna o erro.

Agora estou no trabalho e não tem como fazer mais modificacoes e testes, mas de madrugada na hora q chegar em casa eu tento mais pra ver se continua com o mesmo erro

Meu JSF é 2.1 eu acho

rafa120

galera, valeu mesmo!

As correções estavam certas, porém tive que fazer uma coisa a mais pra funcionar.

criei um index.html com este código:

<meta http-equiv="REFRESH" content="0;url=index.jsf">

e no meu web.xml alterei de index.xhtml para index.html

<welcome-file>index.html</welcome-file>

Deu certo, não sei porque ainda! mas um dia eu descubro rs

valeu

kcobainnn

ne verdade, no seu welcome-file, seria:

<welcome-file>index.jsf</welcome-file>

assim ele redirecionaria direto p/ o seu xhtml, mas, era por causa disso o erro? :o

Criado 21 de janeiro de 2013
Ultima resposta 22 de jan. de 2013
Respostas 11
Participantes 3