Hola hace mucho que no necesitaba de su ayuda, ahora en un proyecto que estoy tratando de empezar me han surgido algunos problemas, y quisiera pedirles una pequeña ayuda.
Estoy trabajando con JSF + PrimerFaces e Hibernate.
Estos son las clases con las que tengo problemas:
MateriaPrima.java
Productor.java
MateriaPrimaBean.java
matntenedor.xhtml
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'. "
Estoy trabajando con JSF + PrimerFaces e Hibernate.
Estos son las clases con las que tengo problemas:
MateriaPrima.java
Código [Seleccionar]
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 [Seleccionar]
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 [Seleccionar]
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 [Seleccionar]
<?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'. "
oce ala cosa es que tengo que ir ingresdando clientes y los datos los va wardando en un fichero pero quiero hacer que se vallan guardando en blokeas acia abajo pero no puedo hacerlo miren aka les dejo los codigos que llevo