Ayuda con JSF + PrimeFaces + Hibernate

Iniciado por Toryas, 27 Abril 2015, 22:31 PM

0 Miembros y 1 Visitante están viendo este tema.

Toryas

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

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

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


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


<?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="&#160;" />
                            <p:commandLink value="Elminar" actionListener="#{materiaPrimaBean.eliminarMateriaPrima(materiaPrima)}" update="table" />
                            <h:outputText value="&#160;" />
                            <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'.  "


Toryas

Resolvi el problema utilizando una libreria llamada omnifaces