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();
}
}
}