Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Can someone help me with this problem with datatable?

gecheniqueSep 2 2015 — edited Sep 3 2015

My Primefaces DataTable  only inserts a row, and successive values are entered in the same row, replacing the previous.


The font code of the xhtml file is the following:

<!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://xmlns.jcp.org/jsf/facelets"

  xmlns:f="http://xmlns.jcp.org/jsf/core"

  xmlns:h="http://xmlns.jcp.org/jsf/html"

  xmlns:p="http://primefaces.org/ui">

<h:head>

  <title><ui:insert name="title">Default title</ui:insert></title>

</h:head>

<h:body>

    <ui:composition template="./WEB-INF/templates/plantilla.xhtml">

   

    <ui:define name="content" >

  

    <f:event type="preRenderView" listener="#{personaBean.listar('F')}" />

    <f:event type="preRenderView" listener="#{productoBean.listar('F')}" />

  

    <h:form>

    <p:outputLabel value="Persona" />

    <p:selectOneMenu value="#{ventaBean.venta.codPersona}" converter="omnifaces.SelectItemsConverter">

    <f:selectItem noSelectionOption="true" itemLabel="Seleccione" itemValue="#{null}" />

    <f:selectItems value="#{personaBean.lstPersonas}" var="per" itemLabel="#{per.nombre}" itemValue="#{per}" />

    </p:selectOneMenu>

  

    <p:outputLabel value="Producto" />

    <p:selectOneMenu value="#{ventaBean.producto}" converter="omnifaces.SelectItemsConverter">

    <f:selectItem noSelectionOption="true" itemLabel="Seleccione" itemValue="#{null}" />

    <f:selectItems value="#{productoBean.lstProductos}" var="pro" itemLabel="#{pro.nombre}" itemValue="#{pro}" />

    </p:selectOneMenu>

  

    <p:outputLabel value="Cantidad" />

    <p:inputText value="#{ventaBean.cantidad}" />

  

    <p:commandButton value="Agregar" actionListener="#{ventaBean.agregar()}" update="detalle" />

  

    <p:dataTable id="detalle" value="#{ventaBean.lista}" var="det" >

  

    <p:column headerText="Nombre Producto">

        #{det.producto.nombre}

    </p:column>

  

    <p:column headerText="Precio">

         #{det.producto.precio}

    </p:column>

  

    <p:column headerText="Cantidad">

         #{det.cantidad}

    </p:column>

    </p:dataTable>

  

    <p:commandButton value="Registrar Venta" />

  

    </h:form>

  

    </ui:define>

  

    </ui:composition>

</h:body>

</html>


Beans code involved is as follows:


VentaBean:

package com.mitocode.bean;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.List;

import javax.faces.bean.ManagedBean;

import javax.faces.view.ViewScoped;

import com.mitocode.model.DetalleVenta;

import com.mitocode.model.Producto;

import com.mitocode.model.Venta;

@ManagedBean

@ViewScoped

public class VentaBean implements Serializable{

  /**

  *

  */

  private static final long serialVersionUID = 8142194527616985494L;

  private Venta venta = new Venta();

  private Producto producto = new Producto();

  private int cantidad;

  private List<DetalleVenta> lista = new ArrayList<DetalleVenta>();

  public List<DetalleVenta> getLista() {

  return lista;

  }

  public void setLista(List<DetalleVenta> lista) {

  this.lista = lista;

  }

  public int getCantidad() {

  return cantidad;

  }

  public void setCantidad(int cantidad) {

  this.cantidad = cantidad;

  }

  public Producto getProducto() {

  return producto;

  }

  public void setProducto(Producto producto) {

  this.producto = producto;

  }

  public Venta getVenta() {

  return venta;

  }

  public void setVenta(Venta venta) {

  this.venta = venta;

  }

  public void agregar(){

  DetalleVenta det = new DetalleVenta();

  det.setCantidad(getCantidad());

  det.setProducto(getProducto());

  this.lista.add(det);

  }

}

PersonaBean:

package com.mitocode.bean;

import java.util.List;

import javax.faces.bean.ManagedBean;

//import javax.faces.bean.RequestScoped;

import javax.faces.bean.ViewScoped;

import javax.faces.context.*;

import com.mitocode.dao.PersonaDAO;

import com.mitocode.model.Persona;

@ManagedBean

@ViewScoped

public class PersonaBean {

  private Persona persona = new Persona();

  private List<Persona> lstPersonas;

  private String accion;

  public String getAccion() {

  return accion;

  }

  public void setAccion(String accion) {

  //this.limpiar();

  this.accion = accion;

  }

  private boolean isPostBack(){

  return FacesContext.getCurrentInstance().isPostback();

  }

  public Persona getPersona() {

  return persona;

  }

  public void setPersona(Persona persona) {

  this.persona = persona;

  }

  public void operar(){

  switch(accion){

  case "Registrar":

  this.registrar();

  this.limpiar();

  break;

  case "Modificar":

  this.modificar();

  this.limpiar();

  break;

  }

  }

  private void limpiar(){

  persona.setCodigo(0);

  persona.setNombre("");

  persona.setSexo("");

  }

  private void registrar(){

  PersonaDAO dao;

  try{

  dao = new PersonaDAO();

  dao.registrar(persona);

  this.listar("V");

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  private void modificar(){

  PersonaDAO dao;

  try{

  dao = new PersonaDAO();

  dao.modificar(persona);

  this.listar("V");

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  public void listar(String valor){

  PersonaDAO dao;

  try{

  if(valor.equals("F")){

  if(isPostBack() == false){

  dao = new PersonaDAO();

  lstPersonas = dao.listar();

  }

  }

  else{

  dao = new PersonaDAO();

  lstPersonas = dao.listar();

  }

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  public List<Persona> getLstPersonas() {

  return lstPersonas;

  }

  public void setLstPersonas(List<Persona> lstPersonas) {

  this.lstPersonas = lstPersonas;

  }

  public void leerID(Persona per){

  PersonaDAO dao;

  Persona temp;

  try{

  dao = new PersonaDAO();

  temp = dao.leerID(per);

  if(temp != null){

  this.persona = temp;

  this.setAccion("Modificar");

  }

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  public void eliminar(Persona per){

  PersonaDAO dao;

  try{

  dao = new PersonaDAO();

  dao.eliminar(per);

  this.listar("V");

  }catch(Exception e){

  e.printStackTrace();

  }

  }

}

ProductoBean:

package com.mitocode.bean;

import java.util.List;

import javax.faces.bean.ManagedBean;

//import javax.faces.bean.RequestScoped;

import javax.faces.bean.ViewScoped;

import javax.faces.context.*;

import com.mitocode.dao.*;

import com.mitocode.model.Producto;

@ManagedBean

@ViewScoped

public class ProductoBean {

  private Producto producto = new Producto();

  private List<Producto> lstProductos;

  private String accion;

  public String getAccion() {

  return accion;

  }

  public void setAccion(String accion) {

  //this.limpiar();

  this.accion = accion;

  }

  private boolean isPostBack(){

  return FacesContext.getCurrentInstance().isPostback();

  }

  public Producto getProducto() {

  return producto;

  }

  public void setProducto(Producto producto) {

  this.producto = producto;

  }

  public void operar(){

  switch(accion){

  case "Registrar":

  this.registrar();

  this.limpiar();

  break;

  case "Modificar":

  this.modificar();

  this.limpiar();

  break;

  }

  }

  public void limpiar(){

  producto.setCodigo(0);

  producto.setNombre("");

  producto.setPrecio(0);

  }

  private void registrar(){

  ProductoDAO dao;

  try{

  dao = new ProductoDAO();

  dao.registrar(producto);

  this.listar("V");

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  private void modificar(){

  ProductoDAO dao;

  try{

  dao = new ProductoDAO();

  dao.modificar(producto);

  this.listar("V");

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  public void listar(String valor){

  ProductoDAO dao;

  try{

  if(valor.equals("F")){

  if(isPostBack() == false){

  dao = new ProductoDAO();

  lstProductos = dao.listar();

  }

  }

  else{

  dao = new ProductoDAO();

  lstProductos = dao.listar();

  }

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  public List<Producto> getLstProductos() {

  return lstProductos;

  }

  public void setLstProductos(List<Producto> lstProductos) {

  this.lstProductos = lstProductos;

  }

  public void leerID(Producto pro){

  ProductoDAO dao;

  Producto temp;

  try{

  dao = new ProductoDAO();

  temp = dao.leerID(pro);

  if(temp != null){

  this.producto = temp;

  this.setAccion("Modificar");

  }

  }catch(Exception e){

  e.printStackTrace();

  }

  }

  public void eliminar(Producto pro){

  ProductoDAO dao;

  try{

  dao = new ProductoDAO();

  dao.eliminar(pro);

  this.listar("V");

  }catch(Exception e){

  e.printStackTrace();

  }

  }

}

And finally, the POJO'S:

Venta:

package com.mitocode.model;

import java.util.Date;

public class Venta {

  private int codigo;

  private Date fecha;

  private Persona codPersona;

  private double monto;

  public int getCodigo() {

  return codigo;

  }

  public void setCodigo(int codigo) {

  this.codigo = codigo;

  }

  public Date getFecha() {

  return fecha;

  }

  public void setFecha(Date fecha) {

  this.fecha = fecha;

  }

  public Persona getCodPersona() {

  return codPersona;

  }

  public void setCodPersona(Persona codPersona) {

  this.codPersona = codPersona;

  }

  public double getMonto() {

  return monto;

  }

  public void setMonto(double monto) {

  this.monto = monto;

  }

}

Producto:

package com.mitocode.model;

public class Producto {

  private int codigo;

  private String nombre;

  private double precio;

  @Override

  public String toString() {

  return "Producto [codigo=" + codigo + "]";

  }

  @Override

  public int hashCode() {

  final int prime = 31;

  int result = 1;

  result = prime * result + codigo;

  return result;

  }

  @Override

  public boolean equals(Object obj) {

  if (this == obj)

  return true;

  if (obj == null)

  return false;

  if (getClass() != obj.getClass())

  return false;

  Producto other = (Producto) obj;

  if (codigo != other.codigo)

  return false;

  return true;

  }

  public int getCodigo() {

  return codigo;

  }

  public void setCodigo(int codigo) {

  this.codigo = codigo;

  }

  public String getNombre() {

  return nombre;

  }

  public void setNombre(String nombre) {

  this.nombre = nombre;

  }

  public double getPrecio() {

  return precio;

  }

  public void setPrecio(double precio) {

  this.precio = precio;

  }

}

Persona:

package com.mitocode.model;

public class Persona {

  private int codigo;

  private String nombre;

  private String sexo;

  @Override

  public String toString() {

  return "Persona [codigo=" + codigo + "]";

  }

  @Override

  public int hashCode() {

  final int prime = 31;

  int result = 1;

  result = prime * result + codigo;

  return result;

  }

  @Override

  public boolean equals(Object obj) {

  if (this == obj)

  return true;

  if (obj == null)

  return false;

  if (getClass() != obj.getClass())

  return false;

  Persona other = (Persona) obj;

  if (codigo != other.codigo)

  return false;

  return true;

  }

  public int getCodigo() {

  return codigo;

  }

  public void setCodigo(int codigo) {

  this.codigo = codigo;

  }

  public String getNombre() {

  return nombre;

  }

  public void setNombre(String nombre) {

  this.nombre = nombre;

  }

  public String getSexo() {

  return sexo;

  }

  public void setSexo(String sexo) {

  this.sexo = sexo;

  }

}

DetalleVenta:

package com.mitocode.model;

public class DetalleVenta {

  private int codigo;

  private Venta venta;

  private Producto producto;

  private int cantidad;

  public int getCodigo() {

  return codigo;

  }

  public void setCodigo(int codigo) {

  this.codigo = codigo;

  }

  public Venta getVenta() {

  return venta;

  }

  public void setVenta(Venta venta) {

  this.venta = venta;

  }

  public Producto getProducto() {

  return producto;

  }

  public void setProducto(Producto producto) {

  this.producto = producto;

  }

  public int getCantidad() {

  return cantidad;

  }

  public void setCantidad(int cantidad) {

  this.cantidad = cantidad;

  }

}

I´m using:

Eclipse Mars (4.5)

Mojarra 2.2.9

Primefaces 5.2

Omnifaces 2.1

Thanks in advance!

A hug for all!

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Oct 1 2015
Added on Sep 2 2015
1 comment
764 views