1

Bueno días y un cordial saludos a todos,

Me estoy iniciando en java, estoy practicando una aplicación de facturación en la cual deseo que el usuario que haga login sea registrado como el vendedor al generar la venta, para ello en el código trato de inyectar parámetro o datos de un Bean a otro con la propiedad @ManagedProperty, la cual no me genera error en la ejecución cuando llamo dichos datos y la aplicación tiende a colgarse cuando se va a registrar o guardar la venta.

Revisando el ouput aparecen los siguiente:

Advertencia:   /Views/Venta/Factura.xhtml @139,83 actionListener="#{facturaBean.guardarVenta()}": java.lang.NullPointerException
javax.el.ELException: /Views/Venta/Factura.xhtml @139,83 actionListener="#{facturaBean.guardarVenta()}": java.lang.NullPointerException

Caused by: java.lang.NullPointerException
at sys.bean.facturaBean.guardarVenta(facturaBean.java:468)

Grave:   java.lang.NullPointerException
at sys.bean.facturaBean.guardarVenta(facturaBean.java:468)

Anexo el código inicial de la Clase facturaBean y el Metodo donde falla la aplicaion, Gracias de antemano.

@Named(value = "facturaBean")
@SessionScoped

public class facturaBean implements Serializable {

Session session = null;
Transaction transaction = null;

@ManagedProperty(value = "#{loginBean}")
private loginBean lBean;

private Cliente cliente;
private Integer codigoCliente;

private Producto producto;
private String codigoBarra;

private List<Detallefactura> listaDetalleFactura;

private String cantidadProducto;
private String productoSeleccionado;
private Factura factura;

private String cantidadProducto2;

private Long numeroFactura;

private BigDecimal totalVentaFactura;

private Vendedor vendedor;

public facturaBean() {
    this.factura = new Factura();
    this.listaDetalleFactura = new ArrayList<>();
    this.vendedor = new Vendedor();
    this.cliente = new Cliente();

}

public loginBean getlBean() {
    return lBean;
}

public void setlBean(loginBean lBean) {
    this.lBean = lBean;
}



public Cliente getCliente() {
    return cliente;
}

public void setCliente(Cliente cliente) {
    this.cliente = cliente;
}

public Integer getCodigoCliente() {
    return codigoCliente;
}

public void setCodigoCliente(Integer codigoCliente) {
    this.codigoCliente = codigoCliente;
}

public Producto getProducto() {
    return producto;
}

public void setProducto(Producto producto) {
    this.producto = producto;
}

public String getCodigoBarra() {
    return codigoBarra;
}

public void setCodigoBarra(String codigoBarra) {
    this.codigoBarra = codigoBarra;
}

public List<Detallefactura> getListaDetalleFactura() {
    return listaDetalleFactura;
}

public void setListaDetalleFactura(List<Detallefactura> listaDetalleFactura) {
    this.listaDetalleFactura = listaDetalleFactura;
}

public String getCantidadProducto() {
    return cantidadProducto;
}

public void setCantidadProducto(String cantidadProducto) {
    this.cantidadProducto = cantidadProducto;
}

public String getProductoSeleccionado() {
    return productoSeleccionado;
}

public void setProductoSeleccionado(String productoSeleccionado) {
    this.productoSeleccionado = productoSeleccionado;
}

public Factura getFactura() {
    return factura;
}

public void setFactura(Factura factura) {
    this.factura = factura;
}

public String getCantidadProducto2() {
    return cantidadProducto2;
}

public void setCantidadProducto2(String cantidadProducto2) {
    this.cantidadProducto2 = cantidadProducto2;
}

public Long getNumeroFactura() {
    return numeroFactura;
}

public void setNumeroFactura(Long numeroFactura) {
    this.numeroFactura = numeroFactura;
}

public BigDecimal getTotalVentaFactura() {
    return totalVentaFactura;
}

public void setTotalVentaFactura(BigDecimal totalVentaFactura) {
    this.totalVentaFactura = totalVentaFactura;
}

public Vendedor getVendedor() {
    return vendedor;
}

public void setVendedor(Vendedor vendedor) {
    this.vendedor = vendedor;
}

//Metodo para guardar venta
public void guardarVenta() {
    this.session = null;
    this.transaction = null;
    this.vendedor.setCodVendedor(lBean.getUsuario().getVendedor().getCodVendedor());/*linea 468*/      

    try {
        this.session = HibernateUtil.getSessionFactory().openSession();
        productoDao pDao = new productoDaoImp();
        facturaDao fDao = new facturaDaoImp();
        detalleFacturaDao dFDao = new detalleFacturaDaoImp();

        this.transaction = this.session.beginTransaction();

        //Datos  para guardar el la tabla factura de la BD
        this.factura.setNumeroFactura(this.numeroFactura.toString());
        this.factura.setCliente(this.cliente);
        this.factura.setVendedor(this.vendedor);

        //Hacemos el insert en la tabla factura de la BD
        fDao.guardarVentaFactura(this.session, this.factura);

        //Recuperar el ultimo registro de la tabla factura
        this.factura = fDao.obtenerUltimoRegistro(this.session);

        //Recorremos el arraylist ptra guardar cada registro en la base de dato
        for (Detallefactura item : listaDetalleFactura) {
            this.producto = pDao.obtenerProductoPorCodBarra(this.session, item.getCodBarra());
            item.setFactura(this.factura);
            item.setProducto(this.producto);

            //Hacemos el insert a la tabla detallafactura de la BD
            dFDao.guardarVentaDetalleFactura(this.session, item);
        }
        this.transaction.commit();
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Correcto", "Venta Registrada"));

        this.limpiarFactura();

    } catch (Exception e) {
        System.out.println(e.getMessage());
        if (this.transaction!=null) {
            this.transaction.rollback();
        }
    }finally{
        if (this.session!=null) {
            this.session.close();
        }
    }
}
jasilva
  • 4,972
  • 6
  • 29
  • 45
J.Quintero
  • 11
  • 1
  • 2
    Haz un debug para ver cual de los siguientes variables es nulo: this.vendedor lBean lBean.getUsuario() lBean.getUsuario().getVendedor() Sin el codigo de la pagina y los pasos que sigues no se puede deducir nada mas. – Lithorell May 23 '17 at 14:35
  • Exactamente lo que dice el de arriba... alguno de esos datos está en null this.vendedor.setCodVendedor(lBean.getUsuario().getVendedor().getCodVendedor()); – FederHico May 23 '17 at 14:35
  • Lo mismo que dicen los de arriba, y sino mira a ver si lo que es null es `session` – Erlantz Calvo May 23 '17 at 14:38
  • ¿Cómo no te va a dar error aquí: `this.vendedor.setCodVendedor(lBean.getUsuario().getVendedor().getCodVendedor());/*linea 468*/`? **1º.** ¿No se supone que debe haber una asignación ahí: `this.vendedor=a algo;...`? **2º.** Es un código **muy extraño este**: `setCodVendedor(lBean.getUsuario().getVendedor().getCodVendedor()` ¿si tuvieras que explicar con palabras llanas lo que quieres hacer en la dichosa línea 468, podrías explicarlo? – A. Cedano May 23 '17 at 14:40
  • @toledano eso está bien cuando no has inicializado tu variable. En este caso, la variable da NPE por un problema particular de JSF. No es un duplicado exacto de esa pregunta. –  May 23 '17 at 15:25

0 Answers0