Estoy trabajando con JSF + PrimerFaces e Hibernate.
Estos son las clases con las que tengo problemas:
MateriaPrima.java
Código:
package com.x.model.pojo;
// Generated 22-04-2015 13:37:05 by Hibernate Tools 4.3.1
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
public class MateriaPrima implements java.io.Serializable {
private Integer id;
private Productor productor;
private int lote;
private Date fechaIngreso;
private int tipoDocumento;
private int numeroDocumento;
private String estado;
private Set detalleMateriaPrimas = new HashSet(0);
public MateriaPrima() {
}
public MateriaPrima(Productor productor, int lote, Date fechaIngreso, int tipoDocumento, int numeroDocumento) {
this.productor = productor;
this.lote = lote;
this.fechaIngreso = fechaIngreso;
this.tipoDocumento = tipoDocumento;
this.numeroDocumento = numeroDocumento;
}
public MateriaPrima(Productor productor, int lote, Date fechaIngreso, int tipoDocumento, int numeroDocumento, Set detalleMateriaPrimas) {
this.productor = productor;
this.lote = lote;
this.fechaIngreso = fechaIngreso;
this.tipoDocumento = tipoDocumento;
this.numeroDocumento = numeroDocumento;
this.detalleMateriaPrimas = detalleMateriaPrimas;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public Productor getProductor() {
return this.productor;
}
public void setProductor(Productor productor) {
this.productor = productor;
}
public int getLote() {
return this.lote;
}
public void setLote(int lote) {
this.lote = lote;
}
public Date getFechaIngreso() {
return this.fechaIngreso;
}
public void setFechaIngreso(Date fechaIngreso) {
this.fechaIngreso = fechaIngreso;
}
public int getTipoDocumento() {
return this.tipoDocumento;
}
public void setTipoDocumento(int tipoDocumento) {
this.tipoDocumento = tipoDocumento;
}
public int getNumeroDocumento() {
return this.numeroDocumento;
}
public void setNumeroDocumento(int numeroDocumento) {
this.numeroDocumento = numeroDocumento;
}
public Set getDetalleMateriaPrimas() {
return this.detalleMateriaPrimas;
}
public void setDetalleMateriaPrimas(Set detalleMateriaPrimas) {
this.detalleMateriaPrimas = detalleMateriaPrimas;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
}
Productor.java
Código:
package com.x.model.pojo;
// Generated 22-04-2015 13:37:05 by Hibernate Tools 4.3.1
import java.util.HashSet;
import java.util.Set;
public class Productor implements java.io.Serializable {
private Integer id;
private String nombre;
private String rut;
private Set materiaPrimas = new HashSet(0);
public Productor() {
}
public Productor(String nombre, String rut) {
this.nombre = nombre;
this.rut = rut;
}
public Productor(String nombre, String rut, Set materiaPrimas) {
this.nombre = nombre;
this.rut = rut;
this.materiaPrimas = materiaPrimas;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNombre() {
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getRut() {
return this.rut;
}
public void setRut(String rut) {
this.rut = rut;
}
public Set getMateriaPrimas() {
return this.materiaPrimas;
}
public void setMateriaPrimas(Set materiaPrimas) {
this.materiaPrimas = materiaPrimas;
}
}
MateriaPrimaBean.java
Código:
package com.x.bean;
import com.x.model.dao.MateriaPrimaDAO;
import com.x.model.dao.ProductorDAO;
import com.x.model.dao.VariedadDAO;
import com.x.model.pojo.MateriaPrima;
import com.x.model.pojo.Productor;
import com.x.model.pojo.Variedad;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
public class MateriaPrimaBean {
private MateriaPrima materiaPrima = new MateriaPrima();
private Productor productor = new Productor();
private List<Productor> listaProductor;
private List<Variedad> listaVariedad;
private List<MateriaPrima> listaMateriaPrima;
private String accion;
public void listaVariedades() {
VariedadDAO vDAO;
try {
vDAO = new VariedadDAO();
listaVariedad = vDAO.lista();
} catch (Exception e) {
}
}
public void leerID(MateriaPrima p) {
MateriaPrimaDAO mDAO;
MateriaPrima temp;
try {
mDAO = new MateriaPrimaDAO();
temp = mDAO.findByID(p.getId());
if (temp != null) {
materiaPrima = temp;
}
} catch (Exception e) {
}
}
public void eliminarMateriaPrima(MateriaPrima p) {
MateriaPrimaDAO mDAO;
try {
mDAO = new MateriaPrimaDAO();
mDAO.delete(p);
this.listaMateriasPrimas();
} catch (Exception e) {
}
}
public void operar() {
switch (accion) {
case "Agregar":
materiaPrima.setFechaIngreso(new Date());
materiaPrima.setNumeroDocumento(11);
intertaMateriaPrima();
limpiarDialog();
break;
case "Modificar":
modificarMateriaPrima();
limpiarDialog();
break;
}
}
public void listaProductores() {
ProductorDAO pDAO;
try {
pDAO = new ProductorDAO();
listaProductor = pDAO.listaProductores();
} catch (Exception e) {
}
}
public void intertaMateriaPrima() {
MateriaPrimaDAO mDAO;
try {
mDAO = new MateriaPrimaDAO();
mDAO.IngresaMateriaPrima(materiaPrima);
} catch (Exception e) {
e.printStackTrace();
}
}
public void listaMateriasPrimas() {
MateriaPrimaDAO mDAO;
try {
mDAO = new MateriaPrimaDAO();
listaMateriaPrima = mDAO.listaMateriasPrimas();
} catch (Exception e) {
}
}
public void dummyMateriasPrima(){
List<MateriaPrima> mm = new ArrayList();
MateriaPrima a = new MateriaPrima();
a.setFechaIngreso(new Date());
a.setLote(2213);
a.setProductor(new Productor("Acme","2"));
a.setEstado("Fumigación");
MateriaPrima b = new MateriaPrima();
b.setFechaIngreso(new Date());
b.setLote(2214);
b.setEstado("Recepcion");
b.setProductor(new Productor("NerNut","1"));
mm.add(b);
mm.add(a);
listaMateriaPrima = mm;
}
public MateriaPrima getMateriaPrima() {
return materiaPrima;
}
public void setMateriaPrima(MateriaPrima materiaPrima) {
this.materiaPrima = materiaPrima;
}
public List<MateriaPrima> getListaMateriaPrima() {
return listaMateriaPrima;
}
public void setListaMateriaPrima(List<MateriaPrima> listaMateriaPrima) {
this.listaMateriaPrima = listaMateriaPrima;
}
public String getAccion() {
return accion;
}
public void setAccion(String accion) {
this.listaProductores();
this.accion = accion;
}
public Productor getProductor() {
return productor;
}
public void setProductor(Productor productor) {
this.productor = productor;
}
public List<Productor> getListaProductor() {
return listaProductor;
}
public void setListaProductor(List<Productor> listaProductor) {
this.listaProductor = listaProductor;
}
public List<Variedad> getListaVariedad() {
return listaVariedad;
}
public void setListaVariedad(List<Variedad> listaVariedad) {
this.listaVariedad = listaVariedad;
}
private void limpiarDialog() {
materiaPrima = new MateriaPrima();
}
private void modificarMateriaPrima() {
//Rellenar
}
}
matntenedor.xhtml
Código:
<?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:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<body>
<ui:composition template="./../WEB-INF/template/main.xhtml">
<ui:define name="content">
<f:event type="preRenderView" listener="#{materiaPrimaBean.dummyMateriasPrima()}" />
<p:growl id="mjg" autoUpdate="true" />
<h:form id="mainForm">
<p:commandButton value="Agregar Materia Prima" oncomplete="PF('wdg').show();" actionListener="#{materiaPrimaBean.setAccion('Agregar')}" update=":dialog"/>
<p:commandButton value="Listar" actionListener="#{materiaPrimaBean.listaMateriasPrimas()}" update="table"/>
<p:dataTable id="table" value="#{materiaPrimaBean.listaMateriaPrima}" var="materiaPrima">
<p:column headerText="Fecha Ingreso" >
<p:outputLabel value="#{materiaPrima.fechaIngreso}"/>
</p:column>
<p:column headerText="Lote" >
<p:outputLabel value="#{materiaPrima.lote}"/>
</p:column>
<p:column headerText="Productor" >
<p:outputLabel value="#{materiaPrima.productor.nombre}"/>
</p:column>
<p:column headerText="Estado" >
<p:outputLabel value="#{materiaPrima.estado}"/>
</p:column>
<p:column headerText="Acciones" >
<p:commandLink value="Modificar" actionListener="#{materiaPrimaBean.leerID(variedad)}" oncomplete="PF('wdg').show();" update=":dialog" />
<h:outputText value=" " />
<p:commandLink value="Elminar" actionListener="#{materiaPrimaBean.eliminarMateriaPrima(materiaPrima)}" update="table" />
<h:outputText value=" " />
<p:commandLink value="Imprimir Tarjas" oncomplete="PF('wdgTarjas').show();"/>
</p:column>
</p:dataTable>
</h:form>
<p:dialog header="Materia Prima" widgetVar="wdg" id="dialog">
<h:form>
<p:panelGrid>
<p:row>
<p:column>
<p:outputLabel value="Lote" />
<p:inputText value="#{materiaPrimaBean.materiaPrima.lote}" />
</p:column>
</p:row>
<p:row>
<p:column>
<p:outputLabel value="Tipo Documento" />
<p:inputText value="#{materiaPrimaBean.materiaPrima.tipoDocumento}" />
</p:column>
<p:column>
<p:outputLabel value="N° Documento" />
<p:inputText value="#{materiaPrimaBean.materiaPrima.tipoDocumento}" />
</p:column>
</p:row>
<p:row>
<p:column>
<p:outputLabel value="Productor" />
<p:selectOneMenu value="#{materiaPrimaBean.materiaPrima.productor}">
<f:selectItem itemValue="" itemLabel="Seleccione Productor" />
<f:selectItems value="#{materiaPrimaBean.listaProductor}" var="productor" itemValue="#{productor}" itemLabel="#{productor.nombre}" />
</p:selectOneMenu>
</p:column>
</p:row>
<p:row>
<p:column>
<p:outputLabel value="Especie" />
<p:inputText value="#{materiaPrimaBean.materiaPrima.lote}" />
</p:column>
<p:column>
<p:outputLabel value="Variedad" />
<p:inputText value="#{materiaPrimaBean.materiaPrima.lote}" />
</p:column>
</p:row>
</p:panelGrid>
<p:accordionPanel activeIndex="-1">
<p:tab title="Detalle" >
<p:panelGrid>
<f:facet name="header">
<p:row>
<p:column colspan="12">Tarjas del Lote</p:column>
</p:row>
<p:row>
<p:column colspan="2">N° Tarja</p:column>
<p:column colspan="2">Productor</p:column>
<p:column colspan="2">Tipo Evnase</p:column>
<p:column colspan="2">Cantidad Evnases</p:column>
<p:column colspan="2">Calibre</p:column>
<p:column colspan="2">Kilos</p:column>
</p:row>
</f:facet>
<p:row>
<p:column colspan="2">101</p:column>
<p:column colspan="2">Acme</p:column>
<p:column colspan="2">Saco 20Kg</p:column>
<p:column colspan="2">20</p:column>
<p:column colspan="2">32</p:column>
<p:column colspan="2">400</p:column>
</p:row>
<p:row>
<p:column colspan="2">102</p:column>
<p:column colspan="2">Acme</p:column>
<p:column colspan="2">Saco 20Kg</p:column>
<p:column colspan="2">20</p:column>
<p:column colspan="2">32</p:column>
<p:column colspan="2">400</p:column>
</p:row>
<p:row>
<p:column colspan="2">104</p:column>
<p:column colspan="2">Acme</p:column>
<p:column colspan="2">Saco 20Kg</p:column>
<p:column colspan="2">20</p:column>
<p:column colspan="2">32</p:column>
<p:column colspan="2">400</p:column>
</p:row>
<p:row>
<p:column colspan="2">105</p:column>
<p:column colspan="2">Acme</p:column>
<p:column colspan="2">Saco 20Kg</p:column>
<p:column colspan="2">20</p:column>
<p:column colspan="2">32</p:column>
<p:column colspan="2">400</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<p:button value="Agregar Fila"/>
</p:column>
</p:row>
</p:panelGrid>
</p:tab>
</p:accordionPanel>
<p:commandButton value="#{materiaPrimaBean.accion}" actionListener="#{materiaPrimaBean.operar()}" oncomplete="PF('wdg').hide();" update=":mainForm:table"/>
<p:commandButton value="Cancelar" immediate="true" oncomplete="PF('wdg').hide();"/>
</h:form>
</p:dialog>
<p:dialog header="Detalle de Materia Prima" widgetVar="wdgTarjas" id="dialogTarjas">
<p:panelGrid>
<f:facet name="header">
<p:row>
<p:column colspan="12">Tarjas del Lote</p:column>
</p:row>
<p:row>
<p:column colspan="2">N° Tarja</p:column>
<p:column colspan="2">Productor</p:column>
<p:column colspan="2">Tipo Evnase</p:column>
<p:column colspan="2">Cantidad Evnases</p:column>
<p:column colspan="2">Calibre</p:column>
<p:column colspan="2">Kilos</p:column>
</p:row>
</f:facet>
<p:row>
<p:column colspan="2">101</p:column>
<p:column colspan="2">Acme</p:column>
<p:column colspan="2">Saco 20Kg</p:column>
<p:column colspan="2">20</p:column>
<p:column colspan="2">32</p:column>
<p:column colspan="2">400</p:column>
</p:row>
<p:row>
<p:column colspan="2">102</p:column>
<p:column colspan="2">Acme</p:column>
<p:column colspan="2">Saco 20Kg</p:column>
<p:column colspan="2">20</p:column>
<p:column colspan="2">32</p:column>
<p:column colspan="2">400</p:column>
</p:row>
<p:row>
<p:column colspan="2">104</p:column>
<p:column colspan="2">Acme</p:column>
<p:column colspan="2">Saco 20Kg</p:column>
<p:column colspan="2">20</p:column>
<p:column colspan="2">32</p:column>
<p:column colspan="2">400</p:column>
</p:row>
<p:row>
<p:column colspan="2">105</p:column>
<p:column colspan="2">Acme</p:column>
<p:column colspan="2">Saco 20Kg</p:column>
<p:column colspan="2">20</p:column>
<p:column colspan="2">32</p:column>
<p:column colspan="2">400</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<p:button value="Imprimir"/>
</p:column>
<p:column colspan="2">
<p:button value="Cancelar"/>
</p:column>
</p:row>
</p:panelGrid>
</p:dialog>
</ui:define>
</ui:composition>
</body>
</html>
El problema que sucede es que al querer guardar un nuevo objeto de materiaPrima me arroja el siguiente error en pantalla desde PF " Error de conversión al definir el valor 'com.x.model.pojo.Productor@172d570f' para 'null Converter'. "