1

soy nuevo por aquí. Estoy presentando un problema en un controller y una clase implementada. Siempre obtengo el mismo error en las mismas líneas. Estoy usando JSF en Eclipse. Intento realizar una búsqueda por un parámetro String, pero al ejecutar la acción obtengo la excepción.

ADVERTENCIA: #{mbVenta.buscarClienteXApellido}: java.lang.NullPointerException
javax.faces.FacesException: #{mbVenta.buscarClienteXApellido}: java.lang.NullPointerException
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    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:646)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    ... 29 more
Caused by: java.lang.NullPointerException
    at com.farmacia.service.ClienteServiceImpl.listaXApellidoCliente(ClienteServiceImpl.java:14)
    at com.farmacia.controller.VentaController.buscarClienteXApellido(VentaController.java:74)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    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.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
    ... 30 more

La consola indica las líneas 14 y 74 de ClienteServiceImpl y VentaController, respectivamente. Comparto el código a continuación:

package com.farmacia.service;
import java.util.List;
import com.farmacia.entity.Cliente;
import com.farmacia.repository.ClienteDAOImpl;
public class ClienteServiceImpl implements ClienteService{  
    private ClienteDAOImpl clienteDAOImpl;  
    public ClienteServiceImpl() {
        clienteDAOImpl = new ClienteDAOImpl();
    }
    @Override
    public List<Cliente> listaXApellidoCliente(String ape) {
        return clienteDAOImpl.listaXApellidoCliente(ape);
    }
}

Parte del error en consola:VentaController

Ese es el formulario desde el que llamo al método "buscarClienteXApellido".

<h:form id="frmConsultaCliente">
                <p:panelGrid columns="4" columnClasses="text-right,ui-fluid" styleClass="ui-panelgrid-blank">
                    <p:outputLabel value="Apellido"  />
                    <h:inputText value="#{mbVenta.apellido}"/>
                    <p:commandButton icon="ui-icon-search"
                                    title="Buscar cliente"
                                    action="#{mbVenta.buscarClienteXApellido}"
                                    update="tablaCliente"/>
                    <f:facet name="footer">
                       <h:panelGroup style = "display:block; text-align:center">
                            <p:dataTable id="tablaCliente" style="width:750px" value="#{mbVenta.listaClientes}" var="rowCliente">
                                <f:facet name="header">Lista Clientes</f:facet>
                                <p:column headerText="CÓDIGO">
                                    <h:outputText value="#{rowCliente.codCliente}"/>
                                </p:column>
                                <p:column headerText="NOMBRE">
                                    <h:outputText value="#{rowCliente.nomCliente}"/>
                                </p:column>
                                <p:column headerText="APELLIDO">
                                    <h:outputText value="#{rowCliente.apeCliente}"/>
                                </p:column>
                                <p:column style="width:50px">
                                    <p:commandButton icon="fa fa-fw fa-edit"/>
                                </p:column>
                            </p:dataTable>  

                      </h:panelGroup>       
                    </f:facet>  
            </p:panelGrid>
            </h:form>

En contraste a todo ello, realicé el mismo proceso para otra consulta y esa sí funciona correctamente. Agradeceré cualquier comentario.

  • Posible duplicado de [¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?](https://es.stackoverflow.com/questions/42977/cu%c3%a1l-es-la-soluci%c3%b3n-a-todos-los-errores-nullpointerexception-presentes-pasados) – Ruslan López Jun 24 '19 at 03:50
  • ¿como esta declarado sCliente en el managed bean? – Alvaro C. Jul 01 '19 at 05:08
  • Creo debes inyectar tu clienteDAOImpl en el servicio por lo que no esta inicializado y por tanto es null – juandej18 Jul 21 '19 at 03:17
  • ¿Puedes poner el código de mbVenta? – Pablo Fradua Aug 26 '20 at 12:29

0 Answers0