Proprietie faltando na minha classe Vendas

02/10/2009

Professor o que pode ser este problema! preciso de sua ajuda pois quando estamos aprendendo ficamos as vezes ancioso por não dar certo!

Ruinaldo

Ruinaldo

Curtidas 0

Respostas

Henrique Weissmann

Henrique Weissmann

02/10/2009

Ruinaldo,

o que ocorre é o seguinte: as propriedades no Java são definidas usando-se as convenções dos Java Beans.

Encontrei este texto na internet que pode lhe ajudar a se aprofundar no assunto: http://www.jeebrasil.com.br/mostrar/23

Com relação ao seu caso específico, faça o seguinte:

verifique se a sua classe devmedia.db.Vendas possui um método chamado setProduto, e uma função chamada getProduto

Supondo que o seu atributo seja uma classe chamada Produto, estes dois métodos deveriam ter as seguintes assinaturas:

public void setProduto(Produto valor)

public Produto getProduto()


GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Profesor tiver que dar uma paradinha mais ja voltei

Bom aquele link esta quebrado estive olhando no site me parace que todos os artigos estão com o mesmo problema!

Professor o que vema a ser este problema: (imagem abaixo)
o meu managaBean que esta sendo usando é este:




public class MaterialFaces {

    private MaterialDao materDao = new MaterialDao();
    private CadMaterial selectMaterial;
    private List<CadMaterial> material;

    public MaterialFaces() {
    }

    public String startAddMaterial(){
        selectMaterial = new CadMaterial();
        return "gotoNewAddMaterial";
    }

    public String finishAddMaterial() throws ClassNotFoundException, SQLException{
        materDao.add(selectMaterial);
        material = null;
        return "cadMarerialSucesso";
    }

    public List<CadMaterial> getMaterial() throws ClassNotFoundException, SQLException{
        if(material == null){
            material = materDao.getAllMaterial();
        }
      
        return material;
    }

    public String startEditMaterial(){
           return "gotoEditMaterial";
    }

    public String finishEditMatrial()throws ClassNotFoundException, SQLException{
        materDao.set(selectMaterial);
        material = null;
        return "gotoListMaterial";
    }
     public String startRemoverMaterial(){
           return "gotoRemoverMaterial";
    }
    public String removeMatrial() throws ClassNotFoundException, SQLException{
        materDao.delete(selectMaterial);
        material = null;
        return "gotoListMaterial";
    }



    public CadMaterial getSelectMaterial() {
        return selectMaterial;
    }

    public void setSelectMaterial(CadMaterial selectMaterial) {
        this.selectMaterial = selectMaterial;
    }



}






GOSTEI 0
Henrique Weissmann

Henrique Weissmann

02/10/2009

Ruinaldo,

esta mensagem é típica de quando digitamos um nome de propriedade ou método de um managed bean incorretamente.

O arquivo jsf irá ser interpretado e, no momento em que a propriedade ou função não for encontrada, esta excessão será disparada.

Outra possibilidade consiste no fato do próprio nome do managed bean estar sendo digitado incorretamente: na mensagem é mencionado ManagaBeans. O nome é meio suspeito. Voce realmente mapeou o bean com este nome?

Será que você poderia nos enviar o trecho jsf que referencia este bean?
GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Professor este problema ja resolvi, porém agora tenho uma dúvida quanto a uma classe converter o erro mostrado é:
exception javax.servlet.ServletException: Expression Error: Named Object: SerieConverter not found.root cause javax.faces.FacesException: Expression Error: Named Object: SerieConverter not found.note The full stack traces of the exception and its root causes are available in the Sun GlassFish Enterprise Server v2.1 logs.
GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Professor esqueça sobre a última mensagem o meu problema é este:


Thu Oct 22 12:54:05 BRST 2009 WARN: Invalid value for server variable named , falling back to sane default of .
Thu Oct 22 12:54:05 BRST 2009 WARN: Invalid value for server variable named , falling back to sane default of .
sourceId=j_id_id63:j_id_id120[severity=(ERROR 2), summary=(j_id_id63:j_id_id120: An error occurred when processing your submitted information. ), detail=(j_id_id63:j_id_id120: An error occurred when processing your submitted information. )];|WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=j_id_id63:j_id_id120[severity=(ERROR 2), summary=(j_id_id63:j_id_id120: An error occurred when processing your submitted information. ), detail=(j_id_id63:j_id_id120: An error occurred when processing your submitted information. )]

GOSTEI 0
Henrique Weissmann

Henrique Weissmann

02/10/2009

Ruinaldo,

você tem mais detalhes para nos fornecer sobre este seu problema?
Com base apenas na sua última mensagem não há muito o que possa ser dito ou analisado.
GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Caro professor estou tentando fazer um pequeno cadastro  e nele eu tenho tres classes
CadSerie, CadMaterial e CadMaterialSerie

CadSerie
 private Integer id;
 private String turno;
 private String desSerie;

Com Get/Set

CadMaterial
    private Integer id;
    private String descMaterial;
  
Com Get/Set

CadMaterialSerie
    private Integer id;
    private CadMaterial idMaterial;
    private CadSerie idSerie;
    private Integer qtd;

Com Get/Set

Meus Daos
 
*Professor colocarei somente o Dao da classe SerieMaterial pois os Daos das outras classe ja usei e ele estão belezinha, pois ja usei pra fazer o cadastro de serie e material e nao tive nenhum problema, mais caso seja necessario dar uma olhada te envio.

SerieMaterial

private static final long serialVersionUID = 1L;
    private MaterialDao matDao = new MaterialDao();
    private SerieDao serDao = new SerieDao();
   

    public MateriaSerieDao(){
        super();
    }

    public boolean add(CadMaterialSerie matSer)throws ClassNotFoundException, SQLException {
        PreparedStatement ps =   getPreparedStatement("INSERT INTO csl.cad_material_serie values (?,?,?,?)");
        ps.setInt(1, matSer.getId());
        ps.setInt(2, matSer.getIdMaterial().getId());
        ps.setInt(3, matSer.getIdSerie().getId());
        ps.setInt(4, matSer.getQtd());
        int toReturn = ps.executeUpdate();
        ps.close();
        return toReturn > 0 ;
    }
    public boolean set(CadMaterialSerie matSer)throws ClassNotFoundException, SQLException{
        PreparedStatement ps = getPreparedStatement("update csl.cad_material_serie set id_material=?, id_serie=?, qtd=? where id=?");
        ps.setInt(1, matSer.getIdMaterial().getId());
        ps.setInt(2, matSer.getIdSerie().getId());
        ps.setInt(3, matSer.getQtd());
        ps.setInt(5,matSer.getId());
        int toReturn = ps.executeUpdate();
        ps.close();
        return toReturn > 0 ;
    }

    public boolean delete (CadMaterialSerie matSer)throws ClassNotFoundException, SQLException{
          PreparedStatement ps = getPreparedStatement("DELETE from csl.cad_material_serie where id=?");
            ps.setInt(1, matSer.getId());
            int toReturn = ps.executeUpdate();
         ps.close();
         return toReturn > 0 ;
        }
    public List<CadMaterialSerie> getAllMaterialSerie()throws ClassNotFoundException, SQLException{
        List<CadMaterialSerie> toReturn = new LinkedList<CadMaterialSerie>();
        ResultSet rs = getStatement().executeQuery("Select * from csl.cad_material_serie");
            while (rs.next()){
                CadMaterialSerie MatSer = new CadMaterialSerie();
                populateMaterialSerie(MatSer, rs);
                toReturn.add(MatSer);
            }
        rs.close();
        return toReturn;
    }

    private void populateMaterialSerie (CadMaterialSerie matSer, ResultSet rs) throws SQLException, ClassNotFoundException{
        matSer.setId(rs.getInt("id"));
        matSer.setIdMaterial(matDao.getById(rs.getInt("id_material")));
        matSer.setIdSerie(serDao.getById(rs.getInt("id_serie")));
    }

    public CadMaterialSerie getById(int idPessoa)throws ClassNotFoundException, SQLException{
        PreparedStatement ps = getPreparedStatement ("select * from csl.cad_material_serie where id=?");
        ps.setInt(1, idPessoa);
        ResultSet rs = ps.executeQuery();
        if (!rs.next())return null;
        CadMaterialSerie toReturn = new CadMaterialSerie();
        populateMaterialSerie (toReturn, rs);
        rs.close();
        ps.close();
        return toReturn;
    }

Meus ManegeBens

*Professor colocarei somente o ManagBen da classe SerieMaterial pois os ManagBen das outras classe ja usei e ele estão belezinha, pois ja usei pra fazer o cadastro de serie e material e nao tive nenhum problema, mais caso seja necessario dar uma olhada te envio.

public class MaterialSerieFaces {

    /** Creates a new instance of MaterialSerieFaces */
    private SerieDao seriDao = new SerieDao();
    private MaterialDao mateDao = new MaterialDao();

    private MateriaSerieDao matSeriDao = new MateriaSerieDao();
    private CadMaterialSerie selectMatSeri;
    private List<CadMaterialSerie> MatSeri;


    public MaterialSerieFaces() {
    }


    public String startAddMaterialSerie(){
        selectMatSeri = new CadMaterialSerie();
        return "gotoAddNewMaterSerie";
    }

    public String finishAddMaterialSerie() throws ClassNotFoundException, SQLException{
        matSeriDao.add(selectMatSeri);
        MatSeri = null;
        return "gotoListMatSerie";
    }

   public List<CadMaterialSerie> getMaterialSerie() throws ClassNotFoundException, SQLException{
        if(MatSeri == null){
            MatSeri = matSeriDao.getAllMaterialSerie();
        }
        return MatSeri;
    }

    public String startEditMaterialSerie(){
           return "gotoEditMatSerie";
    }

    public String finishEditMaterialSerie()throws ClassNotFoundException, SQLException{
        matSeriDao.set(selectMatSeri);
        matSeriDao = null;
        return "gotoListMatSerie";
    }
    public String removeMaterialSerie() throws ClassNotFoundException, SQLException{
        matSeriDao.delete(selectMatSeri);
        matSeriDao = null;
        return "gotoListMatSerie";
    }

    public CadMaterialSerie getSelectMatSeri() {
        return selectMatSeri;
    }

    public void setSelectMatSeri(CadMaterialSerie selectMatSeri) {
        this.selectMatSeri = selectMatSeri;
    }

  

    public List<SelectItem> getSerie() throws ClassNotFoundException, SQLException{
        List<SelectItem> toReturn = new LinkedList<SelectItem>();
        for (CadSerie ser: seriDao.getAllSerie()){
            toReturn.add(new SelectItem(ser, ser.getDesSerie()));
        }
        return toReturn;
    }
     public List<SelectItem> getMaterial() throws ClassNotFoundException, SQLException{
        List<SelectItem> toReturn = new LinkedList<SelectItem>();
        for (CadMaterial MatSer: mateDao.getAllMaterial()){
            toReturn.add(new SelectItem(MatSer, MatSer.getDescMaterial()));
        }
        return toReturn;
    }

Meus Converter

Classe Serie

    public class SerieConverter implements Converter{
    private SerieDao serieDao = new SerieDao();


    public SerieConverter(){
     }

    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        Integer id = Integer.parseInt(value);
        try {
            return serieDao.getById(id);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(SerieConverter.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(SerieConverter.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
      
    }

    public String getAsString(FacesContext context, UIComponent component, Object value) {
        CadSerie serie = (CadSerie)value;
        return String.valueOf(serie.getId());
    }


Classe Material
     public class MaterialConverter implements Converter{
     private MaterialDao mateDao = new MaterialDao();


    public MaterialConverter(){
     }

    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        Integer id = Integer.parseInt(value);
        try {
            return mateDao.getById(id);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MaterialConverter.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(MaterialConverter.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
      
    }

    public String getAsString(FacesContext context, UIComponent component, Object value) {
        CadMaterial mater = (CadMaterial)value;
        return String.valueOf(mater.getId());
    }
}

Não Fiz o Converter da classe MaterialSerie Por acha que não seja necessario!

Fico no anardo de uma resposta ancioso.

Abraços




GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Fautou a minha pagina:

Em uma pagina eu tenho este link:"<h:commandLink action="#{MaterialSerie.startAddMaterialSerie}" value="Adicionar"/>" quando clico nele ele me direciona pra pagina que tem o cogigo abaixo.

"<tbody>
                <tr bgcolor="#0000ff">
                    <td colspan="5" height="25" class="rotulos" align="center"><strong><font color="#ffff00">Cadastro de Material por Serie Coletivo</font></strong></td>
                </tr>
                 <tr>
                    <td class="rotulos" height="50px" align="right">ID:</td>
                    <td class="campos" width="600"><h:inputText size="8" value="#{MaterialSerie.selectMatSeri.id}"></h:inputText></td>
                </tr>
                     <tr>
                    <td class="rotulos" height="50px" align="right">Série:</td>
                    <td class="campos" width="600"><h:selectOneMenu value="#{MaterialSerie.selectMatSeri.idSerie}">
                                                            <f:selectItems value="#{MaterialSerie.serie}"/>
                                                            <f:converter converterId="SerieConverter"/>
                                                  </h:selectOneMenu></td>

                </tr> <tr>
                    <td class="rotulos" height="50px" align="right">Material:</td>
                    <td class="campos" width="600"><h:selectOneMenu value="#{MaterialSerie.selectMatSeri.id}">
                                                        <f:selectItems value="#{MaterialSerie.material}"/>
                                                        <f:converter converterId="MaterialConverter"/>
                                                  </h:selectOneMenu></td>

                </tr>
              
                <tr>
                    <td class="rotulos" height="50px" align="right">Quantidade:</td>
                    <td class="campos" width="600"><h:inputText size="8" value="#{MaterialSerie.selectMatSeri.qtd}"></h:inputText></td>
                </tr>

<h:commandLink action="#{MaterialSerie.finishAddMaterialSerie}" value="Adicionar"/>
                  
          </tbody>"

O que acho mais esquisito é que todos os link aparentemente estão fuincionando pois em nenhum momento sou direcionado para pagina de erro.
GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Professor descobri o error  estava na seguinte linha:
 <td class="rotulos" height="50px" align="right">Material:</td>
                    <td class="campos" width="600"><h:selectOneMenu value="#           {MaterialSerie.selectMatSeri.id}">
                                                        <f:selectItems value="#{MaterialSerie.material}"/>
                                                        <f:converter converterId="MaterialConverter"/>
                                                  </h:selectOneMenu></td>

No lugar de  id era idMaterial

Não sei, professor as vezes acho que sou conseguir descobrir  o erro quando eu ja o tenho postado, acho que vou procurar um psicológo
kkkkkkk!

Abraços
GOSTEI 0
Henrique Weissmann

Henrique Weissmann

02/10/2009

Sem problemas Ruinaldo!

Precisando de qualquer coisa estamos aqui

(estava justamente lendo seu chamado quando postou sua resposta!)
GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Em primeiro lugar professor teve um feedback que marquei errado acho que pela presa peço desculpa! Seria até injustiça minha dizer que você ou o Dyego Carmo não são antenciosos, pois os acho muito atenciosos comigo!

Em segundo lugar estou com mais um probleminha kkkkk! nesse codigo!  Na realidada não é mostrado nenhuma tela de error o pro esta quando faço a busca do banco ele consegue trazer value="#{item.idSerie.desSerie}"/> a serie, value="#{item.idMaterial.descMaterial}"/> o material porém ele não traz a quantidade value="#{item.qtd}"/> bom o esquisito é que esta quantidade existe no banco!


<h:dataTable border="1" var="item" value="#{MaterialSerie.materialSerie}">
                   

                     <h:column>
                        <f:facet name="header">
                            <h:outputText  styleClass="rotulos"  value="SERIE"/>
                        </f:facet>
                         <h:outputText  styleClass="campos"  value="#{item.idSerie.desSerie}"/>
                    </h:column>
                     <h:column>
                        <f:facet name="header">
                            <h:outputText  styleClass="rotulos"  value="MATERIAL"/>
                        </f:facet>
                         <h:outputText  styleClass="campos"  value="#{item.idMaterial.descMaterial}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText  styleClass="rotulos"  value="QTD"/>
                        </f:facet>
                         <h:outputText  styleClass="campos"  value="#{item.qtd}"/>
                    </h:column>

                    <h:column>
                        <f:facet name="header">
                            <h:outputText  styleClass="rotulos"  value="COD"/>
                        </f:facet>
                        <h:commandLink  value="#{item.id}" action="#{MaterialSerie.startEditMaterialSerie}">
                            <f:setPropertyActionListener target="#{MaterialSerie.selectMatSeri}" value="#"/>
                    </h:commandLink>


                    </h:column>
                </h:dataTable>
GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Bem caro professor ja encotrei o problema o mesmo esta na classe MateriaSerieDao faltava a linha que sta em destaque.



 private void populateMaterialSerie (CadMaterialSerie matSer, ResultSet rs) throws SQLException, ClassNotFoundException{
    matSer.setId(rs.getInt("id"));
    matSer.setQtd(rs.getInt("qtd"));
    matSer.setIdMaterial(matDao.getById(rs.getInt("id_material")));         matSer.setIdSerie(serDao.getById(rs.getInt("id_serie"))); }

abraços
GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

 
Professor não estou conseguindo uso do metodo editar da classe MaterialSerie:

Meu Pojo
 
public class CadMaterialSerie implements java.io.Serializable {
private static final long serialVersionUID = 1L;

    private Integer id;
    private CadMaterial idMaterial;
    private CadSerie idSerie;
    private Integer qtd;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public CadMaterial getIdMaterial() {
        return idMaterial;
    }

    public void setIdMaterial(CadMaterial idMaterial) {
        this.idMaterial = idMaterial;
    }

    public CadSerie getIdSerie() {
        return idSerie;
    }

    public void setIdSerie(CadSerie idSerie) {
        this.idSerie = idSerie;
    }

    public Integer getQtd() {
        return qtd;
    }

    public void setQtd(Integer qtd) {
        this.qtd = qtd;
    }

     public String toString(){
        return String.valueOf(id);
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final CadMaterialSerie other = (CadMaterialSerie) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 83 * hash + (this.id != null ? this.id.hashCode() : 0);
        return hash;
    }



Meu Dao da classe MaterialSerie
public class MateriaSerieDao extends DatabaseUtil {

    private static final long serialVersionUID = 1L;
    private MaterialDao matDao = new MaterialDao();
    private SerieDao serDao = new SerieDao();
   

    public MateriaSerieDao(){
        super();
    }

    public boolean add(CadMaterialSerie matSer)throws ClassNotFoundException, SQLException {
        PreparedStatement ps =   getPreparedStatement("INSERT INTO csl.cad_material_serie values (?,?,?,?)");
        ps.setInt(1, matSer.getId());
        ps.setInt(2, matSer.getIdMaterial().getId());
        ps.setInt(3, matSer.getIdSerie().getId());
        ps.setInt(4, matSer.getQtd());
        int toReturn = ps.executeUpdate();
        ps.close();
        return toReturn > 0 ;
    }
    public boolean set(CadMaterialSerie matSer)throws ClassNotFoundException, SQLException{
        PreparedStatement ps = getPreparedStatement("update csl.cad_material_serie set id_material=?, id_serie=?, qtd=? where id=?");
        ps.setInt(1, matSer.getIdMaterial().getId());
        ps.setInt(2, matSer.getIdSerie().getId());
        ps.setInt(3, matSer.getQtd());
        ps.setInt(5,matSer.getId());
        int toReturn = ps.executeUpdate();
        ps.close();
        return toReturn > 0 ;
    }

    public boolean delete (CadMaterialSerie matSer)throws ClassNotFoundException, SQLException{
          PreparedStatement ps = getPreparedStatement("DELETE from csl.cad_material_serie where id=?");
            ps.setInt(1, matSer.getId());
            int toReturn = ps.executeUpdate();
         ps.close();
         return toReturn > 0 ;
        }
    public List<CadMaterialSerie> getAllMaterialSerie()throws ClassNotFoundException, SQLException{
        List<CadMaterialSerie> toReturn = new LinkedList<CadMaterialSerie>();
        ResultSet rs = getStatement().executeQuery("Select * from csl.cad_material_serie");
            while (rs.next()){
                CadMaterialSerie MatSer = new CadMaterialSerie();
                populateMaterialSerie(MatSer, rs);
                toReturn.add(MatSer);
            }
        rs.close();
        return toReturn;
    }

    private void populateMaterialSerie (CadMaterialSerie matSer, ResultSet rs) throws SQLException, ClassNotFoundException{
        matSer.setId(rs.getInt("id"));
        matSer.setQtd(rs.getInt("qtd"));
        matSer.setIdMaterial(matDao.getById(rs.getInt("id_material")));
        matSer.setIdSerie(serDao.getById(rs.getInt("id_serie")));
    }

    public CadMaterialSerie getById(int idPessoa)throws ClassNotFoundException, SQLException{
        PreparedStatement ps = getPreparedStatement ("select * from csl.cad_material_serie where id=?");
        ps.setInt(1, idPessoa);
        ResultSet rs = ps.executeQuery();
        if (!rs.next())return null;
        CadMaterialSerie toReturn = new CadMaterialSerie();
        populateMaterialSerie (toReturn, rs);
        rs.close();
        ps.close();
        return toReturn;
    }



}
Minha ManageBean MaterialSerieFaces
public class MaterialSerieFaces {

    /** Creates a new instance of MaterialSerieFaces */
    private SerieDao seriDao = new SerieDao();
    private MaterialDao mateDao = new MaterialDao();

    private MateriaSerieDao matSeriDao = new MateriaSerieDao();
    private CadMaterialSerie selectMatSeri;
    private List<CadMaterialSerie> MatSeri;


    public MaterialSerieFaces() {
    }


    public String startAddMaterialSerie(){
        selectMatSeri = new CadMaterialSerie();
        return "gotoAddNewMaterSerie";
    }

    public String finishAddMaterialSerie() throws ClassNotFoundException, SQLException{
        matSeriDao.add(selectMatSeri);
        MatSeri = null;
        return "gotoListMatSerie";
    }

   public List<CadMaterialSerie> getMaterialSerie() throws ClassNotFoundException, SQLException{
        if(MatSeri == null){
            MatSeri = matSeriDao.getAllMaterialSerie();
        }
        return MatSeri;
    }

    public String startEditMaterialSerie(){
           return "gotoEditMatSerie";
    }

    public String finishEditMaterialSerie()throws ClassNotFoundException, SQLException{
        matSeriDao.set(selectMatSeri);
        matSeriDao = null;
        return "gotoListMatSerie";
    }
    public String removeMaterialSerie() throws ClassNotFoundException, SQLException{
        matSeriDao.delete(selectMatSeri);
        matSeriDao = null;
        return "gotoListMatSerie";
    }

    public CadMaterialSerie getSelectMatSeri() {
        return selectMatSeri;
    }

    public void setSelectMatSeri(CadMaterialSerie selectMatSeri) {
        this.selectMatSeri = selectMatSeri;
    }

  

    public List<SelectItem> getSerie() throws ClassNotFoundException, SQLException{
        List<SelectItem> toReturn = new LinkedList<SelectItem>();
        for (CadSerie ser: seriDao.getAllSerie()){
            toReturn.add(new SelectItem(ser, ser.getDesSerie()));
        }
        return toReturn;
    }
     public List<SelectItem> getMaterial() throws ClassNotFoundException, SQLException{
        List<SelectItem> toReturn = new LinkedList<SelectItem>();
        for (CadMaterial MatSer: mateDao.getAllMaterial()){
            toReturn.add(new SelectItem(MatSer, MatSer.getDescMaterial()));
        }
        return toReturn;
    }


}


Minha página EditSerieMate
  <h:dataTable border="1" var="item" value="#{MaterialSerie.materialSerie}">
                   

                     <h:column>
                        <f:facet name="header">
                            <h:outputText  styleClass="rotulos"  value="SERIE"/>
                        </f:facet>
                         <h:outputText  styleClass="campos"  value="#{item.idSerie.desSerie}"/>
                    </h:column>
                     <h:column>
                        <f:facet name="header">
                            <h:outputText  styleClass="rotulos"  value="MATERIAL"/>
                        </f:facet>
                         <h:outputText  styleClass="campos"  value="#{item.idMaterial.descMaterial}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText  styleClass="rotulos"  value="QTD"/>
                        </f:facet>
                         <h:outputText  styleClass="campos"  value="#{item.qtd}"/>
                    </h:column>

                    <h:column>
                        <f:facet name="header">
                            <h:outputText  styleClass="rotulos"  value="COD"/>
                        </f:facet>
                        <h:commandLink  value="Editar" action="#{MaterialSerie.startEditMaterialSerie}">
                            <f:setPropertyActionListener target="#{MaterialSerie.selectMatSeri}" value="#"/>
                    </h:commandLink>


                    </h:column>
                </h:dataTable>
   </h:form>

Minha página EditarSerieMate

<h:commandLink action="#{MaterialSerie.startEditMaterialSerie}" value="Editar"/>

<table border="0" cellspacing="0" cellpadding="0" width="305">
        <tr>
          <td class="rotulos">ID:</td>
          <td width="322" class="campos"><h:inputText disabled="true" size="2" value="#{MaterialSerie.selectMatSeri.id}"></h:inputText></td>
        </tr>
         <tr>
          <td class="rotulos">SERIE:</td>
          <td width="322" class="campos"><h:selectOneMenu value="#{MaterialSerie.selectMatSeri.idSerie}">
                                                            <f:selectItems value="#{MaterialSerie.serie}"/>
                                                           <f:converter converterId="SerieConverter"/>
                                                  </h:selectOneMenu></td>
        </tr>

        <tr>
          <td class="rotulos">MATERIAL:</td>
          <td width="322" class="campos"><h:selectOneMenu value="#{MaterialSerie.selectMatSeri.idMaterial}">
                                                        <f:selectItems value="#{MaterialSerie.material}"/>
                                                        <f:converter converterId="MaterialConverter"/>
                                                  </h:selectOneMenu></td>
        </tr>
         <tr>
          <td class="rotulos">QTD:</td>
          <td width="322" class="campos"><h:inputText  size="2" value="#{MaterialSerie.selectMatSeri.qtd}"></h:inputText></td>
        </tr>
     </table>


Minha regra de mavegação
    
  
    <navigation-rule>
        <from-view-id>/MaterialporSerie.jsp</from-view-id>
        <navigation-case>
            <from-outcome>gotoAddNewMaterSerie</from-outcome>
            <to-view-id>/AdicionaMaterialSerie.jsp</to-view-id>
        </navigation-case>
      
 <navigation-case>
            <from-outcome>gotoEditMatSerie</from-outcome>
            <to-view-id>/EditSerieMate.jsp</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>welcome</from-outcome>
            <to-view-id>/welcomeJSF.jsp</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>gotoListMaterialSerie</from-outcome>
            <to-view-id>/Cadastros.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>

  
 <navigation-rule>
        <from-view-id>/AdicionaMaterialSerie.jsp</from-view-id>
        <navigation-case>
            <from-outcome>gotoListMatSerie</from-outcome>
            <to-view-id>/sucessoCadastroSerieMaterial.jsp</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>welcome</from-outcome>
            <to-view-id>/welcomeJSF.jsp</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>gotoListMatSerie</from-outcome>
            <to-view-id>/MaterialporSerie.jsp</to-view-id>
        </navigation-case>
</navigation-rule>
   
<navigation-rule>
        <from-view-id>/sucessoCadastroSerieMaterial.jsp</from-view-id>
        <navigation-case>
            <from-outcome>gotoAddNewMaterSerie</from-outcome>
            <to-view-id>/AdicionaMaterialSerie.jsp</to-view-id>
        </navigation-case>
      <navigation-case>
            <from-outcome>gotoListSerieMaterial</from-outcome>
            <to-view-id>/MaterialporSerie.jsp</to-view-id>
        </navigation-case>
  </navigation-rule>
   
  <navigation-rule>
        <from-view-id>/EditSerieMate.jsp</from-view-id>
        <navigation-case>
            <from-outcome>gotoEditMatSerie</from-outcome>
            <to-view-id>/EditarSerieMate.jsp</to-view-id>
</navigation-case>
       
<navigation-case>
            <from-outcome>gotoListMaterialSerie</from-outcome>
            <to-view-id>/MaterialporSerie.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
    
<converter>
        <converter-id>SerieConverter</converter-id>
        <converter-class>classses.coverter.SerieConverter</converter-class>
    </converter>
    <converter>
        <converter-id>MaterialConverter</converter-id>
        <converter-class>classses.coverter.MaterialConverter</converter-class>
    </converter>
    <navigation-rule>
        <from-view-id>/EditarSerieMate.jsp</from-view-id>
        <navigation-case>
            <from-outcome>gotoListMaterialSerie</from-outcome>
            <to-view-id>/EditSerieMate.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
</faces-config>



GOSTEI 0
Henrique Weissmann

Henrique Weissmann

02/10/2009

Oi Ruinaldo,

com relação a este seu último post, o que exatamente você não está conseguindo fazer ou dando errado? (não ficou claro)
GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

  Professor o problema é que eu não estou conseguindo editar, quando eu clico no link que faz uso do método   public String finishEditMaterialSerie()throws ClassNotFoundException, SQLException{
        matSeriDao.set(selectMatSeri);
        matSeriDao = null;
        return "gotoListMatSerie";
    }   não dar erro, porém quando vou olhar no banco a edição nao aconteceu
GOSTEI 0
Henrique Weissmann

Henrique Weissmann

02/10/2009

Oi Ruinaldo,

Será que neste seu método:

public String finishEditMaterialSerie()throws ClassNotFoundException, SQLException{
        matSeriDao.set(selectMatSeri);
        matSeriDao = null;
        return "gotoListMatSerie";
    }

Não deveria existir também um chamado para executar a persistência não? Algo como matSeriDao.persistir() ?
GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

acredito que não, porque estou usando algo similar nesta outra classe (abaixo) e está dando certo!

public class MaterialFaces {

    private MaterialDao materDao = new MaterialDao();
    private CadMaterial selectMaterial;
    private List<CadMaterial> material;

    public MaterialFaces() {
    }

    public String startAddMaterial(){
        selectMaterial = new CadMaterial();
        return "gotoNewAddMaterial";
    }

    public String finishAddMaterial() throws ClassNotFoundException, SQLException{
        materDao.add(selectMaterial);
        material = null;
        return "cadMarerialSucesso";
    }

    public List<CadMaterial> getMaterial() throws ClassNotFoundException, SQLException{
        if(material == null){
            material = materDao.getAllMaterial();
        }
      
        return material;
    }

    public String startEditMaterial(){
           return "gotoEditMaterial";
    }

    public String finishEditMatrial()throws ClassNotFoundException, SQLException{
        materDao.set(selectMaterial);
        material = null;
        return "gotoListMaterial";
    }
     public String startRemoverMaterial(){
           return "gotoRemoverMaterial";
    }
    public String removeMatrial() throws ClassNotFoundException, SQLException{
        materDao.delete(selectMaterial);
        material = null;
        return "gotoListMaterial";
    }



    public CadMaterial getSelectMaterial() {
        return selectMaterial;
    }

    public void setSelectMaterial(CadMaterial selectMaterial) {
        this.selectMaterial = selectMaterial;
    }



}

GOSTEI 0
Dyego Carmo

Dyego Carmo

02/10/2009

Opa !

Boa tarde !

Agora sou eu que estou atendendo o seu chamado

Poderia me explicar resumidamente o que está ocorrendo ?

GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Caro Dyego

o problem é o seguinte: tenho uma classe chamada CadMaterial, CadSerie e CadMateriaSerie algo parecido com o  que vc fez com Produto, Login e Venda no caso o seu Venda é o meu CadMateriaSerie
    private Integer id;
    private CadMaterial idMaterial;
    private CadSerie idSerie;
    private Integer qtd;

estou consegundo cadastrar Material, Serie e MaterialSerie o problema esta na hora de editar este MaterialSerie, pois ele nao esta editando e nem aparece nenhuma tela de erro porém quando vou no bando descubro que o item não foi editado!


GOSTEI 0
Dyego Carmo

Dyego Carmo

02/10/2009

Cole aqui o metodo que voce utiliza para atualizar

é este matDAO.set() ?


GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Descobri o error, era o seguinte: este link está assim:

<h:commandLink action="#{MaterialFaces.startEditMaterialSerie}" value="Editar"/>

e deveria está assim:

<h:commandLink action="#{MaterialFaces.finishEditMaterialSerie}" value="Editar"/>


GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Dyego gostaria que vc me ajude a melhora meu codigo nessa tela de editar o MaterialSerie porque pra poder editar eu tenho que passar por umas 3 telas eu sei que é possivél melhorar este código mais n/ao sei como fazer isso!

Fico no aguardo de uma resposta!
GOSTEI 0
Dyego Carmo

Dyego Carmo

02/10/2009

Três telas ?

Nao seria:

1) Lista
2) editar
3) volta para a lista ?

Nao sao estas as três telas ?

GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Sim. são três na realiade porém o que eu não estou gostando é da tela em que primeiro ele lista pra depois eu editar, se por exemplo eu quise editar um usuario ele exibiria todos pra eu poder escolher um, queria pegar somente um determinado produto da lista e editar ele. Entendeu?
GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Dyego ainda estou no aguardo de uma resposta por favor ajude-me!
GOSTEI 0
Dyego Carmo

Dyego Carmo

02/10/2009

O que voce pode fazer na tela destes usuarios é colocar logo acima da LISTA DE TODOS OS USUARIOS um INPUT do tipo:


Localizar: <INPUT> BOTAO

Assim voce poderia localizar o usuario diretamente ao CLICAR no botao e apenas apresentar ele... fica mais facil de apresentar.

GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Dyego tente fazer diferente e na tentativa me veio um problema, se eu tenho uma tbela em que o campo id é auto incremento isso quer dizer que o proprio banco vai gerar um numero não é? e se vou usar este metodo como exemplo


public boolean add(CadMaterial mater)throws ClassNotFoundException, SQLException {
        PreparedStatement ps =   getPreparedStatement("INSERT INTO csl.cad_material values (?,?)");
        ps.setInt(1, mater.getId());
        ps.setString(2, mater.getDescMaterial());
        int toReturn = ps.executeUpdate();
        ps.close();
        return toReturn > 0 ;
    }

a linha de codigo vermelho, nesse caso eu não precisaria usar esta linha de código correto? POrque se o campo é auto incremento ele ira gerar o id automaticamente porém quando tente fazer a inçerção o banco mostrou este erro column count doesn't match value count at row 1 um erro tipo de quando não se esta passando a query completa emplique pra mim então como ussar o auto incremento estou usando o BD MySQL
GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Dyego acabei tendo outro problema quando fui cria um filter para o login o erro foi:


Que erro é este?


Application server startup complete.
Exception occured in J2EEC Phasejava.lang.IllegalArgumentException: Invalid URL Pattern: [/*.faces]
com.sun.enterprise.deployment.backend.IASDeploymentException: Error loading deployment descriptors for module [ColegioSaoLUcas] -- Invalid URL Pattern: [/*.faces]
        at com.sun.enterprise.deployment.backend.Deployer.loadDescriptors(Deployer.java:406)
        at com.sun.enterprise.deployment.backend.ModuleDeployer.loadDescriptors(ModuleDeployer.java:426)
        at com.sun.enterprise.deployment.backend.WebModuleDeployer.deploy(WebModuleDeployer.java:160)
        at com.sun.enterprise.deployment.backend.ModuleDeployer.doRequestFinish(ModuleDeployer.java:182)
        at com.sun.enterprise.deployment.phasing.J2EECPhase.runPhase(J2EECPhase.java:208)
        at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108)
        at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:966)
        at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:283)
        at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:835)
        at com.sun.enterprise.management.deploy.DeployThread.deploy(DeployThread.java:187)
        at com.sun.enterprise.management.deploy.DeployThread.run(DeployThread.java:225)
Caused by: java.lang.IllegalArgumentException: Invalid URL Pattern: [/*.faces]
        at com.sun.enterprise.deployment.node.web.FilterMappingNode.setElementValue(FilterMappingNode.java:116)
        at com.sun.enterprise.deployment.node.SaxParserHandler.endElement(SaxParserHandler.java:444)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement(XMLSchemaValidator.java:795)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
        at com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:298)
        at com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:226)
        at com.sun.enterprise.deployment.archivist.Archivist.readStandardDeploymentDescriptor(Archivist.java:480)
        at com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:305)
        at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:213)
        at com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:813)
        at com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:794)
        at com.sun.enterprise.deployment.backend.Deployer.loadDescriptors(Deployer.java:365)
        ... 10 more
Exception occured in J2EEC Phasejava.lang.IllegalArgumentException: Invalid URL Pattern: [/*.faces]
com.sun.enterprise.deployment.backend.IASDeploymentException: Error loading deployment descriptors for module [ColegioSaoLUcas] -- Invalid URL Pattern: [/*.faces]
        at com.sun.enterprise.deployment.backend.Deployer.loadDescriptors(Deployer.java:406)
        at com.sun.enterprise.deployment.backend.ModuleDeployer.loadDescriptors(ModuleDeployer.java:426)
        at com.sun.enterprise.deployment.backend.WebModuleDeployer.deploy(WebModuleDeployer.java:160)
        at com.sun.enterprise.deployment.backend.ModuleDeployer.doRequestFinish(ModuleDeployer.java:182)
        at com.sun.enterprise.deployment.phasing.J2EECPhase.runPhase(J2EECPhase.java:208)
        at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108)
        at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:966)
        at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:283)
        at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:835)
        at com.sun.enterprise.management.deploy.DeployThread.deploy(DeployThread.java:187)
        at com.sun.enterprise.management.deploy.DeployThread.run(DeployThread.java:225)
Caused by: java.lang.IllegalArgumentException: Invalid URL Pattern: [/*.faces]
        at com.sun.enterprise.deployment.node.web.FilterMappingNode.setElementValue(FilterMappingNode.java:116)
        at com.sun.enterprise.deployment.node.SaxParserHandler.endElement(SaxParserHandler.java:444)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement(XMLSchemaValidator.java:795)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
        at com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:298)
        at com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:226)
        at com.sun.enterprise.deployment.archivist.Archivist.readStandardDeploymentDescriptor(Archivist.java:480)
        at com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:305)
        at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:213)
        at com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:813)
        at com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:794)
        at com.sun.enterprise.deployment.backend.Deployer.loadDescriptors(Deployer.java:365)
        ... 10 more

GOSTEI 0
Dyego Carmo

Dyego Carmo

02/10/2009

Quanto a duvida do AUTO-INCREMENTO , sim voce esta correto , a linha em vermelho nao eh mais necessaria pois o banco vai gerar isto para voce...

Quanto a outra duvida vou pedir que voce abra um outro chamado com esta duvida , pois este contempla uma duvida diferente ( voce deve abrir um chamado para cada duvida)

Posso fechar este?

Obrigado !

GOSTEI 0
Ruinaldo

Ruinaldo

02/10/2009

Sim, Professor o chamado pode ser fechado! 
GOSTEI 0
POSTAR