Ajuda com SelectOne

11 respostas
B

Bom dia galera.
Meu primeiro post e eu ja venho com , o que para mim, é um problemão ^^

Estou aprendendo ainda a programar java web, então, muito dos erros que tenho as vezes sao coisas simples, mas que para mim que nao tem um bom conhecimento ainda, é complicado para fazer sozinho :/

O que esta pegando é o seguinte...

Estou desenvolvendo um sistema para garagem, coisa simples por enquanto..
Nele, preciso cadastrar um carro, mas preciso pegar o modelo dele de uma outra tabela, e estou tentando fazer isso atraves de um SelectOne
Eu ja tentei realmente de tudo, mas enfim, nao consegui fazer funcionar.

Se alguem pudesse me ajudar, eu agradeceria

Classe Carro - Esta gigante, pois foi importada do banco
public class Carro implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Column(name = "placa")
    private String placa;
    @Basic(optional = false)
    @Column(name = "ano")
    private int ano;
    @Basic(optional = false)
    @Column(name = "cor")
    private String cor;
    @Basic(optional = false)
    @Column(name = "motor")
    private String motor;
    @Basic(optional = false)
    @Column(name = "combustivel")
    private String combustivel;
    @Basic(optional = false)
    @Column(name = "kilometragem")
    private double kilometragem;
    @Basic(optional = false)
    @Column(name = "data_compra")
    private String dataCompra;
    @Lob
    @Column(name = "foto")
    private byte[] foto;
    @Basic(optional = false)
    @Column(name = "chassi")
    private String chassi;
    @Basic(optional = false)
    @Column(name = "valor_tabela_fipe")
    private double valorTabelaFipe;
    @Basic(optional = false)
    @Column(name = "valor_compra")
    private double valorCompra;
    @Basic(optional = false)
    @Column(name = "valor_venda")
    private double valorVenda;
    @Column(name = "qtd_dono")
    private Integer qtdDono;
    @Column(name = "copia_chave")
    private String copiaChave;
    @Column(name = "manual")
    private String manual;
    @Column(name = "pneu")
    private String pneu;
    @Column(name = "roda")
    private String roda;
    @Column(name = "observacao")
    private String observacao;
    @Column(name = "valor_agregado")
    private Double valorAgregado;
    @JoinColumn(name = "modelo_id", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Modelo modelo;

    public Carro() {
    }

    public Carro(Integer id) {
        this.id = id;
    }

    public Carro(Integer id, int ano, String cor, String motor, String combustivel, double kilometragem, String dataCompra, String chassi, double valorTabelaFipe, double valorCompra, double valorVenda) {
        this.id = id;
        this.ano = ano;
        this.cor = cor;
        this.motor = motor;
        this.combustivel = combustivel;
        this.kilometragem = kilometragem;
        this.dataCompra = dataCompra;
        this.chassi = chassi;
        this.valorTabelaFipe = valorTabelaFipe;
        this.valorCompra = valorCompra;
        this.valorVenda = valorVenda;
    }

    public Integer getId() {
        return id;
    }

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

    public String getPlaca() {
        return placa;
    }

    public void setPlaca(String placa) {
        this.placa = placa;
    }

    public int getAno() {
        return ano;
    }

    public void setAno(int ano) {
        this.ano = ano;
    }

    public String getCor() {
        return cor;
    }

    public void setCor(String cor) {
        this.cor = cor;
    }

    public String getMotor() {
        return motor;
    }

    public void setMotor(String motor) {
        this.motor = motor;
    }

    public String getCombustivel() {
        return combustivel;
    }

    public void setCombustivel(String combustivel) {
        this.combustivel = combustivel;
    }

    public double getKilometragem() {
        return kilometragem;
    }

    public void setKilometragem(double kilometragem) {
        this.kilometragem = kilometragem;
    }

    public String getDataCompra() {
        return dataCompra;
    }

    public void setDataCompra(String dataCompra) {
        this.dataCompra = dataCompra;
    }

    public byte[] getFoto() {
        return foto;
    }

    public void setFoto(byte[] foto) {
        this.foto = foto;
    }

    public String getChassi() {
        return chassi;
    }

    public void setChassi(String chassi) {
        this.chassi = chassi;
    }

    public double getValorTabelaFipe() {
        return valorTabelaFipe;
    }

    public void setValorTabelaFipe(double valorTabelaFipe) {
        this.valorTabelaFipe = valorTabelaFipe;
    }

    public double getValorCompra() {
        return valorCompra;
    }

    public void setValorCompra(double valorCompra) {
        this.valorCompra = valorCompra;
    }

    public double getValorVenda() {
        return valorVenda;
    }

    public void setValorVenda(double valorVenda) {
        this.valorVenda = valorVenda;
    }

    public Integer getQtdDono() {
        return qtdDono;
    }

    public void setQtdDono(Integer qtdDono) {
        this.qtdDono = qtdDono;
    }

    public String getCopiaChave() {
        return copiaChave;
    }

    public void setCopiaChave(String copiaChave) {
        this.copiaChave = copiaChave;
    }

    public String getManual() {
        return manual;
    }

    public void setManual(String manual) {
        this.manual = manual;
    }

    public String getPneu() {
        return pneu;
    }

    public void setPneu(String pneu) {
        this.pneu = pneu;
    }

    public String getRoda() {
        return roda;
    }

    public void setRoda(String roda) {
        this.roda = roda;
    }

    public String getObservacao() {
        return observacao;
    }

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }

    public Double getValorAgregado() {
        return valorAgregado;
    }

    public void setValorAgregado(Double valorAgregado) {
        this.valorAgregado = valorAgregado;
    }

    public Modelo getModelo() {
        return modelo;
    }

    public void setModelo(Modelo modelo) {
        this.modelo = modelo;
    }

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

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Carro)) {
            return false;
        }
        Carro other = (Carro) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Entidades.Carro[id=" + id + "]";
    }
Classe Facade - para poder inserir,excluir,etc
@Stateless
public class CarroFacade extends AbstractFacade<Carro> {
     //@PersistenceContext(unitName = "garagem-ejbPU")
    @PersistenceContext(unitName = "csPU")
    private EntityManager em;
    private static final String sqlListar = "SELECT * FROM garagem.carro ORDER BY id";
    private String sql;

    protected EntityManager getEntityManager() {
        return em;
    }

    public CarroFacade() {
        super(Carro.class);
    }

     // inicio do codigo para inserir
    public void inserir (Carro carro) throws SQLException{

        Connection conn = null;
        conn = ConnectionFactory.getNewConnection();

        if (carro.getId() == null) {
            sql = "insert into garagem.carro (placa, ano, cor, motor, combustivel, kilometragem, "
                    + "data_compra, chassi, valor_tabela_fipe, valor_compra, valor_venda, valor_agregado, qtd_dono, "
                    + "copia_chave, manual, pneu, roda, observacao) "
                    + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            } else {

          }
        try {
             PreparedStatement stmt = conn.prepareStatement(sql);
             stmt.setString(1, carro.getPlaca());            
             stmt.setInt(2, carro.getAno());
             stmt.setString(3, carro.getCor());
             stmt.setString(4, carro.getMotor());
             stmt.setString(5, carro.getCombustivel());
             stmt.setDouble(6, carro.getKilometragem());
             stmt.setString(7, carro.getDataCompra());
            // stmt.setBytes(9, carro.getFoto());
             stmt.setString(8, carro.getChassi());
             stmt.setDouble(9, carro.getValorTabelaFipe());
             stmt.setDouble(10, carro.getValorCompra());
             stmt.setDouble(11, carro.getValorVenda());
             stmt.setDouble(12, carro.getValorAgregado());
             stmt.setInt(13, carro.getQtdDono());
             stmt.setString(14, carro.getCopiaChave());
             stmt.setString(15, carro.getManual());
             stmt.setString(16, carro.getPneu());
             stmt.setString(17, carro.getRoda());
             stmt.setString(18, carro.getObservacao());

            //if (carro.getId() != 0) {
            //stmt.setInt(19, carro.getId());
            // }
            stmt.execute();
            conn.close();
        } catch (SQLException ex) {
            Logger.getLogger(CarroFacade.class.getName()).log(Level.SEVERE, null, ex);
         } 
     }
    //final do codigo salvar
    //codigo de excluir
    public void excluir(Carro carro) throws SQLException {
        Connection conn = null;
        conn = ConnectionFactory.getNewConnection();
        sql = "DELETE FROM garagem.carro WHERE id = ?";
        PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.setInt(1, carro.getId());
        stmt.execute();
        conn.close();
    }
    //final do codigo de excluir

    public void alterar(Carro carro) throws SQLException{
        Connection conn = null;
        conn = ConnectionFactory.getNewConnection();

         if (carro.getId() != 0) {
        sql = "update garagem.carro set placa = ?, modelo_id = ?, ano = ?, cor = ?, motor = ?, combustivel = ?, "
                 + "kilometragem = ?, data_compra = ?,"
                 + " chassi = ?, valor_tabela_fipe = ?, valor_compra = ?, valor_venda = ?, valor_agregado = ?, qtd_dono = ?, "
                 + "copia_chave = ?, manual = ?, pneu = ?, roda = ?, observacao = ? where id = ?";
         } else {

          }
        try {
             PreparedStatement stmt = conn.prepareStatement(sql);
             stmt.setString(1, carro.getPlaca());
             stmt.setInt(2, carro.getAno());
             stmt.setString(3, carro.getCor());
             stmt.setString(4, carro.getMotor());
             stmt.setString(5, carro.getCombustivel());
             stmt.setDouble(6, carro.getKilometragem());
             stmt.setString(7, carro.getDataCompra());
             //stmt.setBytes(9, carro.getFoto());
             stmt.setString(8, carro.getChassi());
             stmt.setDouble(9, carro.getValorTabelaFipe());
             stmt.setDouble(10, carro.getValorCompra());
             stmt.setDouble(12, carro.getValorVenda());
             stmt.setDouble(12, carro.getValorAgregado());
             stmt.setInt(13, carro.getQtdDono());
             stmt.setString(14, carro.getCopiaChave());
             stmt.setString(15, carro.getManual());
             stmt.setString(16, carro.getPneu());
             stmt.setString(17, carro.getRoda());
             stmt.setString(18, carro.getObservacao());
             stmt.setInt(19, carro.getId());

                   stmt.execute();
            conn.close();
        } catch (SQLException ex) {
            Logger.getLogger(CarroFacade.class.getName()).log(Level.SEVERE, null, ex);
         } catch (Exception e) {
        }
     }
    //começo do codigo de listar todos
    public List listaTodos() throws SQLException {
        List<Carro> carros = new ArrayList<Carro>();
        Connection conn = null;
        conn = ConnectionFactory.getNewConnection();

        try {
            PreparedStatement stmt = conn.prepareStatement(sqlListar);
            ResultSet rs = stmt.executeQuery();
            while (rs.next()) {
                Carro carro = new Carro();
                carro.setId(rs.getInt("id"));
                carro.setPlaca(rs.getString("placa"));     
                carro.setAno(rs.getInt("ano"));
                carro.setCor(rs.getString("cor"));
                carro.setMotor(rs.getString("motor"));
                carro.setCombustivel(rs.getString("combustivel"));
                carro.setKilometragem(rs.getDouble("kilometragem"));
                carro.setDataCompra(rs.getString("data_compra"));
               // carro.setFoto(rs.getBytes("foto"));
                carro.setChassi(rs.getString("chassi"));
                carro.setValorTabelaFipe(rs.getDouble("valor_tabela_fipe"));
                carro.setValorCompra(rs.getDouble("valor_compra"));
                carro.setValorVenda(rs.getDouble("valor_venda"));
                carro.setValorAgregado(rs.getDouble("valor_agregado"));
                carro.setQtdDono(rs.getInt("qtd_donos"));
                carro.setCopiaChave(rs.getString("copia_chave"));
                carro.setManual(rs.getString("manual"));
                carro.setPneu(rs.getString("pneu"));
                carro.setRoda(rs.getString("roda"));
                carro.setObservacao(rs.getString("observacao"));

                carros.add(carro);
            }
            conn.close();
        } catch (SQLException ex) {
            Logger.getLogger(CarroFacade.class.getName()).log(Level.SEVERE, null, ex);
        }
        return carros;
    }
}
Classe Bean
@ManagedBean
@RequestScoped
public class CarroBean {

    private Carro carro;
    private Carro carroSelecionado;
    private CarroFacade cf;
    private List<Carro> carros;
    private StreamedContent foto;

    public CarroBean() throws SQLException {
        carro = new Carro();
        carroSelecionado = new Carro();
        cf = new CarroFacade();
        carros = new ArrayList<Carro>();
        carros = cf.listaTodos();
    }

    public Carro getCarro() {
        return carro;
    }

    public void setCarro(Carro carro) {
        this.carro = carro;
    }

    public Carro getCarroSelecionado() {
        return carroSelecionado;
    }

    public void setCarroSelecionado(Carro carroSelecionado) {
        this.carroSelecionado = carroSelecionado;
    }

    public CarroFacade getCf() {
        return cf;
    }

    public void setCf(CarroFacade cf) {
        this.cf = cf;
    }

    public List<Carro> getCarros() {
        return carros;
    }

    public void setCarros(List<Carro> carros) {
        this.carros = carros;
    }

    public StreamedContent getFoto() {
        return foto;
    }

    public void setFoto(StreamedContent foto) {
        this.foto = foto;
    }

   /* public void handleFileUpload(FileUploadEvent event) {
        try {
            foto = new DefaultStreamedContent(event.getFile().getInputstream());
            byte[] foto2 = event.getFile().getContents();
            this.carro.setFoto(foto2);
        } catch (IOException ex) {
            Logger.getLogger(CarroBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }*/

    //-----------------------------------------------------------
    //-----------------------------------------------------------
    //-----------------------------------------------------------
    //-----------------------------------------------------------
    //-----------------------------------------------------------
    //-----------------------------------------------------------
    public void salvar() {
        try {
            cf.inserir(carro);
        } catch (Exception e) {
            System.out.println("erro na hora de salvar");
        }
    }

    public void excluir() {

        try {
            cf.excluir(carro);
            carros = cf.listaTodos();
        } catch (Exception e) {
            System.out.println("erro na hora de deletar");
        }
    }

    public void alterar(){
          try {
            cf.alterar(carro);
        } catch (Exception e) {
            System.out.println("erro na hora de alterar");
        }
    }

    public void carros() {
        try {
           cf.listaTodos();
        } catch (Exception e) {
            System.out.println("erro na hora de listar");
        }
      
    }
}
Pagina de cadastro do Carro
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:head>
        <title>Carro's Shop / Bem Vindo ao Painel</title>
        <link href="../img/favicon.png" rel="shortcut icon" />

        <link rel="stylesheet" type="text/css" href="../css/painel.css"/>
    </h:head>

    <h:body>
        <f:view>
            <!-- INCLUDE DO MENU -->
            <ui:include src="menu.xhtml"></ui:include>

            <div class="meio" style="margin-top: 20px; margin-bottom: 20px;">
                <h1 style="font-size: 25px; margin-bottom: 20px;">Cadastrar Carro</h1>

                <h:form>
                    <p:panel header="Preencha Corretamente o Formulário abaixo">
                        <div style="width: 480px; margin: 0 auto; margin-top: 20px;">
                            <h:panelGrid columns="2" cellpadding="5">

                                <h:outputText value="Placa: " />
                                <p:inputText value="#{carroBean.carro.placa}" style="width: 74px; text-transform: uppercase;" styleClass="espacoInput"/>

                                <h:outputText value="Modelo: "/>
                                <h:selectOneMenu value="#{modeloBean.modelo.id}" style="width: 160px; border: 1px solid #CCC;" styleClass="espacoInput">
                                    <f:selectItems value="#{modeloBean.modelos}"/>
                                </h:selectOneMenu> 
                               
                                <h:outputText value="Ano: " />
                                <p:inputText value="#{carroBean.carro.ano}" style="width: 40px;" styleClass="espacoInput" size="9"/>

                                <h:outputText value="Cor: " />
                                <p:inputText  value="#{carroBean.carro.cor}" styleClass="espacoInput"/>

                                <h:outputText value="Motor: " />
                                <p:inputText value="#{carroBean.carro.motor}" styleClass="espacoInput" style="width: 27px;"/>

                                <h:outputText value="Combustivel: " />
                                <p:inputText value="#{carroBean.carro.combustivel}" styleClass="espacoInput"/>

                                <h:outputText value="Kilometragem: " />
                                <p:inputText value="#{carroBean.carro.kilometragem}" styleClass="espacoInput"/>

                                <h:outputText value="Data da Compra: " />
                                <p:inputText value="#{carroBean.carro.dataCompra}" styleClass="espacoInput" size="9"/>

                                <h:inputHidden value="#{carroBean.carro.foto}"/>
                                <h:inputHidden value="#{carroBean.carro.modelo}"/>

                                <h:outputText value="Chassi: " />
                                <p:inputText value="#{carroBean.carro.chassi}" styleClass="espacoInput" size="9"/>

                                <h:outputText value="Valor Tab. FIPE - R$:" />
                                <p:inputText value="#{carroBean.carro.valorTabelaFipe}" styleClass="espacoInput"/>

                                <h:outputText value="Valor da Compra - R$:" />
                                <p:inputText value="#{carroBean.carro.valorCompra}" styleClass="espacoInput" />

                                <h:outputText value="Valor de Venda - R$:" />
                                <p:inputText value="#{carroBean.carro.valorVenda}" styleClass="espacoInput" />

                                <h:outputText value="Valor Agregado - R$:" />
                                <p:inputText value="#{carroBean.carro.valorAgregado}" styleClass="espacoInput" />

                                <h:outputText value="Quantidade de Donos: " />
                                <p:inputText value="#{carroBean.carro.qtdDono}" styleClass="espacoInput" />

                                <h:outputText value="Cópia de Chave: " />
                                <p:inputText value="#{carroBean.carro.copiaChave}" styleClass="espacoInput"/>

                                <h:outputText value="Manual: " />
                                <p:inputText value="#{carroBean.carro.manual}" styleClass="espacoInput"/>

                                <h:outputText value="Pneus:" />
                                <p:inputText value="#{carroBean.carro.pneu}" style="width: 87px; text-transform: uppercase;" styleClass="espacoInput"/>

                                <h:outputText value="Rodas (Em Polegadas): " />
                                <p:inputText value="#{carroBean.carro.roda}" style="width: 20px;" styleClass="espacoInput"/>

                                <h:outputText value="Observação: " />
                                <p:inputText value="#{carroBean.carro.observacao}" style="width: 300px; height: 300px;" styleClass="espacoInput" size="200"/>

                                <p:commandButton styleClass="botoesForm" value="Limpar" type="reset" />
                                <p:commandButton styleClass="botoesForm" value="Cadastrar" action="#{carroBean.salvar}" update="display" oncomplete="dialog.show()"/>
                               
                            </h:panelGrid>
                        </div>
                    </p:panel>

                    <!-- TELA RESPOSTA QUANDO CLICA NO BOTÃO "CADASTRAR"-->
                    <p:dialog widgetVar="dialog" width="280" height="80" modal="true">
                        <h:panelGrid id="display" columns="2" cellpadding="5">

                            <h:outputText value="Carro Cadastrado com Sucesso." />

                        </h:panelGrid>
                    </p:dialog>

                </h:form>
            </div> <!-- AQUI TERMINA O CONTEUDO -->
        </f:view>
    </h:body>
</html>

Eu consigo puxar o modelo e a descrição da tabela modelo, só nao sei como fazer para conseguir gravar o o Id dele na tabela Carro.
Retirei do facade a opção de inserir , alterar e listar esse modelo na tabela Carro.

Como poderão notar, há um atributo para inserir foto, mas como esta muito complicado para mim por enquanto conseguir pegar uma imagem, gravar ela e depois exibi-la
no site, deixei de lado por enquanto

Procurei implementar o SelectOne de acordo com um tutorial que encontrei na internet
http://www.lucasallan.com/2010/01/05/jsf-utilizando-o-selectonemenu-de-maneira-facil/

Mas mesmo assim, nao consegui

Se alguem puder me ajudar, eu agradeço muito. As vezes é algo simples, mas que para mim, que nao sabe, sera que grande ajuda.

Obrigado.

11 Respostas

Hebert_Coelho

Quando você chama o ManagedBean ele vem com o valor do selectOne?

B

Na pagina, eu consigo fazer ele listar a marca e a descrição, tudo beleza
Ou seja, ele pelo menos visualmente funciona.

O meu problema seria na parte da logica, porque nao sei o que fazer para conseguir gravar :confused:

Hebert_Coelho

Você tem um ManagedBean certo?

Crie dentro dele uma string chamada sei lah, modelo.

No seu selectOne tem a opção value nela vc aponta para o campo modelo do MB.

No método do MB que irá criar o objeto, antes de chamar o dao voc fazer carro.setModelo.

sammers21

Kra provavelmente vc precisara criar um converter da entity Modelo para que vc possa receber o id na entity Carro.

Hebert_Coelho

Eita, bem observado sammers21.

Achei que modelo era uma string.

Cara, para criar um converter tem esse post que eu criei que mostra como fazer isso: JSF: Converter e Bean Auto Complete.

B

Pois é, Modelo é uma classe ^^

Estou tendo muita dificuldade, ta muito dificil fazer isso :confused:
Estou fazendo num modelo CRUD, então, uma duvida que eu tenho é a seguinte…

No metodo de inserir, eu devo passar pra ele gravar o modelo_id, ou isso nao precisa ir na String SQL?

exemplo

sql = "insert into garagem.carro (placa, ano, cor, motor, combustivel, kilometragem, " + "data_compra, chassi, valor_tabela_fipe, valor_compra, valor_venda, qtd_dono, " + "copia_chave, manual, pneu, roda, observacao) " + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

Esta assim o string para gravar na tabela
Eu devo deixar assim :

sql = "insert into garagem.carro (placa,[b]modelo_id[/b], ano, cor, motor, combustivel, kilometragem, " + "data_compra, chassi, valor_tabela_fipe, valor_compra, valor_venda, qtd_dono, " + "copia_chave, manual, pneu, roda, observacao) " + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

??

Ou nao precisa?

B

Jakefrog, olhei o tutorial que voce me passou
Eu tentei, mas mesmo assim eu nao consegui fazer gravar :/

GRAVE: javax.faces.FacesException
        at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:84)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
        at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
        at ModeloConverter.getAsObject(ModeloConverter.java:26)
        at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:171)
        at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(MenuRenderer.java:200)
        at com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(MenuRenderer.java:317)
        at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1008)
        at javax.faces.component.UIInput.validate(UIInput.java:934)
        at javax.faces.component.UIInput.executeValidate(UIInput.java:1189)
        at javax.faces.component.UIInput.processValidators(UIInput.java:691)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
        at javax.faces.component.UIForm.processValidators(UIForm.java:243)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
        at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080)
        at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1180)
        at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
        ... 27 more

AVISO: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
        at java.io.Writer.write(Writer.java:140)
        at com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:200)
        at com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:119)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
        at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:619)

Este é um erro que deu agora quando mandei gravar
Olhando seu tutorial, criei uma classe Converter, ficou deste jeito

@FacesConverter(value="modeloConverter")
public class ModeloConverter implements Converter{

    @Override
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String key) {
        FacesContext context = FacesContext.getCurrentInstance();
        ModeloBean modelobean = (ModeloBean) context.getELContext().getELResolver().getValue(context.getELContext(), null, "ModeloBean");

        return modelobean.getModelo();
    }

    @Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
        return arg2.toString();
    }
}

E na visão, deixei deste jeito

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:head>
        <title>Carro's Shop / Bem Vindo ao Painel</title>
        <link href="../img/favicon.png" rel="shortcut icon" />

        <link rel="stylesheet" type="text/css" href="../css/painel.css"/>
    </h:head>

    <h:body>
        <f:view>
            <!-- INCLUDE DO MENU -->
            <ui:include src="menu.xhtml"></ui:include>

            <div class="meio" style="margin-top: 20px; margin-bottom: 20px;">
                <h1 style="font-size: 25px; margin-bottom: 20px;">Cadastrar Carro</h1>

                <h:form>
                    <p:panel header="Preencha Corretamente o Formulário abaixo">
                        <div style="width: 480px; margin: 0 auto; margin-top: 20px;">
                            <h:panelGrid columns="2" cellpadding="5">

                                <h:outputText value="Placa: " />
                                <p:inputText value="#{carroBean.carro.placa}" style="width: 74px; text-transform: uppercase;" styleClass="espacoInput"/>

                                <h:outputText value="Modelo:"/>
                                <h:selectOneMenu value="#{modeloBean.modelo}">
                                    <f:selectItems value="#{modeloBean.modelos}"/>
                                    <f:converter converterId="modeloConverter"/>
                                </h:selectOneMenu>

                                <h:outputText value="Ano: " />
                                <p:inputText value="#{carroBean.carro.ano}" style="width: 40px;" styleClass="espacoInput" size="9"/>

                                <h:outputText value="Cor: " />
                                <p:inputText  value="#{carroBean.carro.cor}" styleClass="espacoInput"/>

                                <h:outputText value="Motor: " />
                                <p:inputText value="#{carroBean.carro.motor}" styleClass="espacoInput" style="width: 27px;"/>

                                <h:outputText value="Combustivel: " />
                                <p:inputText value="#{carroBean.carro.combustivel}" styleClass="espacoInput"/>

                                <h:outputText value="Kilometragem: " />
                                <p:inputText value="#{carroBean.carro.kilometragem}" styleClass="espacoInput"/>

                                <h:outputText value="Data da Compra: " />
                                <p:inputText value="#{carroBean.carro.dataCompra}" styleClass="espacoInput" size="9"/>

                                <h:outputText value="Chassi: " />
                                <p:inputText value="#{carroBean.carro.chassi}" styleClass="espacoInput" size="9"/>

                                <h:outputText value="Valor Tab. FIPE - R$:" />
                                <p:inputText value="#{carroBean.carro.valorTabelaFipe}" styleClass="espacoInput"/>

                                <h:outputText value="Valor da Compra - R$:" />
                                <p:inputText value="#{carroBean.carro.valorCompra}" styleClass="espacoInput" />

                                <h:outputText value="Valor de Venda - R$:" />
                                <p:inputText value="#{carroBean.carro.valorVenda}" styleClass="espacoInput" />

                                <h:outputText value="Valor Agregado - R$:" />
                                <p:inputText value="#{carroBean.carro.valorAgregado}" styleClass="espacoInput" />

                                <h:outputText value="Quantidade de Donos: " />
                                <p:inputText value="#{carroBean.carro.qtdDono}" styleClass="espacoInput" />

                                <h:outputText value="Cópia de Chave: " />
                                <p:inputText value="#{carroBean.carro.copiaChave}" styleClass="espacoInput"/>

                                <h:outputText value="Manual: " />
                                <p:inputText value="#{carroBean.carro.manual}" styleClass="espacoInput"/>

                                <h:outputText value="Pneus:" />
                                <p:inputText value="#{carroBean.carro.pneu}" style="width: 87px; text-transform: uppercase;" styleClass="espacoInput"/>

                                <h:outputText value="Rodas (Em Polegadas): " />
                                <p:inputText value="#{carroBean.carro.roda}" style="width: 20px;" styleClass="espacoInput"/>

                                <h:outputText value="Observação: " />
                                <p:inputText value="#{carroBean.carro.observacao}" style="width: 300px; height: 300px;" styleClass="espacoInput" size="200"/>

                                <p:commandButton styleClass="botoesForm" value="Limpar" type="reset" />
                                <p:commandButton styleClass="botoesForm" value="Cadastrar" action="#{carroBean.salvar}" update="display" oncomplete="dialog.show()"/>

                                <!-- <p:commandButton value="Opcionais" update="telaOpcionais" oncomplete="opcionais.show()"/><br/><br/><br/><br/> -->

                            </h:panelGrid>
                        </div>
                    </p:panel>

                    <!-- TELA RESPOSTA QUANDO CLICA NO BOTÃO "OPCIONAIS"-->
                    <p:dialog header="Selecione os Opcionais" widgetVar="opcionais" width="500" height="300" modal="true">
                        <h:panelGrid id="telaOpcionais" columns="2" cellpadding="5">

                            <h:selectManyCheckbox>
                                <f:selectItem itemLabel="Ar Condicionado"></f:selectItem>
                            </h:selectManyCheckbox>

                        </h:panelGrid>
                    </p:dialog>

                    <!-- TELA RESPOSTA QUANDO CLICA NO BOTÃO "CADASTRAR"-->
                    <p:dialog widgetVar="dialog" width="280" height="80" modal="true">
                        <h:panelGrid id="display" columns="2" cellpadding="5">

                            <h:outputText value="Carro Cadastrado com Sucesso." />

                        </h:panelGrid>
                    </p:dialog>

                </h:form>
            </div> <!-- AQUI TERMINA O CONTEUDO -->
        </f:view>
    </h:body>
</html>

Muita coisa para arrumar? :/

Hebert_Coelho

Seu erro está nessa linha aqui:

ModeloConverter.getAsObject(ModeloConverter.java:26)

O que tem nela?

B

É a seguinte linha de codigo

return modelobean.getModelo();

No seu tutorial, essa linha de codigo é este:

return userMB.getUserByName(key);

Eu só nao entendi amigo, de onde veio o getUserByName(key);

_________________________________

Dei uma arrumada no codigo
@FacesConverter(value="modeloConverter")
public class ModeloConverter implements Converter{

     @Override
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String key) {
        FacesContext context = FacesContext.getCurrentInstance();
        ModeloBean modeloMB = (ModeloBean) context.getELContext().getELResolver().getValue(context.getELContext(), null, "modeloMB");

         return modeloMB.getModelo();
    }

    @Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
        return arg2.toString();
    }
}

Mas ele continua dando o erro acima
O que sera que pode ser amigo?

Hebert_Coelho

Veio do managed Bean.

Você tem esse ModeloBean? Posta o código aí?

B

Esta do seguinte jeito:

ModeloBean
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Beans;

import javax.faces.bean.ManagedBean;
import Entidades.Modelo;
import Facades.ModeloFacade;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.RequestScoped;

/**
 *
 * @author ADM
 */
@ManagedBean
@RequestScoped
public class ModeloBean {

    private Modelo modelo;
    private Modelo modeloSelecionado;
    private ModeloFacade mf;
    private List<Modelo> modelos;

    public ModeloBean() throws SQLException {
        modelo = new Modelo();
        modeloSelecionado = new Modelo();
        mf = new ModeloFacade();
        modelos = new ArrayList<Modelo>();
        modelos = mf.listaTodos();
    }

    public Modelo getModelo() {
        return modelo;
    }

    public void setModelo(Modelo modelo) {
        this.modelo = modelo;
    }

    public Modelo getModeloSelecionado() {
        return modeloSelecionado;
    }

    public void setModeloSelecionado(Modelo modeloSelecionado) {
        this.modeloSelecionado = modeloSelecionado;
    }

    public ModeloFacade getMf() {
        return mf;
    }

    public void setMf(ModeloFacade mf) {
        this.mf = mf;
    }

    public List<Modelo> getModelos() {
        return modelos;
    }

    public void setModelos(List<Modelo> modelos) {
        this.modelos = modelos;
    }

    //-----------------------------------------------------------
    //-----------------------------------------------------------
    //-----------------------------------------------------------
    //-----------------------------------------------------------
    //-----------------------------------------------------------
    //-----------------------------------------------------------
    public void salvar() {
        try {
            mf.inserir(modelo);
        } catch (Exception e) {
            System.out.println("erro na hora de salvar");
        }
    }

    public void excluir() {
        try {
            mf.excluir(modelo);
            modelos = mf.listaTodos();
        } catch (Exception e) {
            System.out.println("erro na hora de gravar");
        }
    }

    public void alterar() {
        try {
            mf.alterar(modelo);
        } catch (Exception e) {
            System.out.println("erro na hora de alterar");
        }
    }

    public void modelos() {
        try {
            mf.listaTodos();
        } catch (Exception e) {
            System.out.println("erro na hora de listar");
        }

    }
}
Criado 9 de novembro de 2011
Ultima resposta 10 de nov. de 2011
Respostas 11
Participantes 3