2
respostas

Não consigo atualizar meu Objeto recuperado jsp

Estou tentando atualizar o meu formulário após recuperar um objeto e não consigo.

Meu DAO

public Contato buscaPeloID(Contato contato) {
        String sql = "select * from contato where id = ?";

        Contato buscaContato= null;
        try (PreparedStatement stmt = this.connection.prepareStatement(sql)) {
            stmt.setInt(1, contato.getId());
            ResultSet resultSet = stmt.executeQuery();

            while (resultSet.next()) {
                buscaContato = buscaContato(resultSet);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return buscaContato;
    }

    private Contato buscaContato(ResultSet rs) throws SQLException {
        Contato contato = new Contato();
        contato.setId(rs.getInt("id"));
        contato.setNome(rs.getString("nome"));
        contato.setEmail(rs.getString("email"));
        contato.setEndereco(rs.getString("endereco"));
        Date date = rs.getDate("data_nascimento");
        if (date != null) {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            contato.setDataNascimento(c);
        }
        return contato;
    }

    public void atualiza(Contato contato) {

        String sql = "update contato set nome=?, email=?, endereco=?, data_nascimento = ?  where id=?";

        try (PreparedStatement stmt = connection.prepareStatement(sql)) {
            stmt.setString(1, contato.getNome());
            stmt.setString(2, contato.getEmail());
            stmt.setString(3, contato.getEndereco());
            stmt.setDate(4, new Date(contato.getDataNascimento() != null ? contato.getDataNascimento().getTimeInMillis() : null ));
            stmt.setInt(5, contato.getId());
            stmt.execute();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

view

<body>

    <form action="mvc?logica=AdicionaContatoLogica" method="post">
        ID<input type="text" name="id" value="${contato.id}"><br />
        Nome<input type="text" name="nome" value="${contato.nome}"><br />
        Email<input type="text" name="email" value="${contato.email}"><br />
        Endereco<input type="text" name="endereco" value="${contato.endereco}"><br />
        Data<input type="text" name="data" value="<fmt:formatDate value="${contato.dataNascimento.time}" pattern="dd/MM/yyyy" />">
        <input type="submit" value="Enviar">

    </form>

Controller

package aprendendo.Servlet;

import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

import DAO.ContatoDAO;
import conexao.ConnectionFactory;
import logica.Logica;
import modelo.Contato;

public class AdicionaContatoLogica implements Logica {

    @Override
    public String executa(HttpServletRequest request, HttpServletResponse response) throws Exception {

        Connection connection = ConnectionFactory.getConnection();

        String id = request.getParameter("id");
        String nome = request.getParameter("nome");
        String endereco = request.getParameter("endereco");
        String email = request.getParameter("email");
        String dataNascimento = request.getParameter("dataNascimento");

        Calendar calendar = Calendar.getInstance();
        try {
            Date data = new SimpleDateFormat("dd/MM/yyyy").parse(dataNascimento);
            calendar.setTime(data);
        } catch (ParseException e) {
            System.out.println("Erro ao converter Data: " + e);
            return "mvc?logica=ListaContatoLogica";
        }

        Contato contato = new Contato();

        contato.setId(Integer.parseInt(id));
        contato.setNome(nome);
        contato.setEndereco(endereco);
        contato.setEmail(email);
        contato.setDataNascimento(calendar);

        ContatoDAO dao = new ContatoDAO(connection);

        dao.atualiza(contato);

        return "mvc?logica=ListaContatoLogica";
    }
}
2 respostas

Já testei o método atualizar, o problema está em algum canto da minha view ou algo do tipo.

public static void main(String[] args) throws SQLException {

Connection c = ConnectionFactory.getConnection(); ContatoDAO contatoDAO = new ContatoDAO(c);

Contato cc = new Contato(); cc.setId(26);

Contato buscaPeloID = contatoDAO.buscaPeloID(cc);

System.out.println("Recuperado: " +buscaPeloID.getNome());

cc.setNome("Francisco Everaldo"); cc.setEndereco("Rua das Palmeiras"); cc.setEmail("everaldo@hotmail.com"); Calendar calendar = Calendar.getInstance(); calendar.set(2018, 05, 9); cc.setDataNascimento(calendar);

contatoDAO.atualiza(cc);

}

Opa, mas qual o problema... Uma coisa que eu vi, é que você importou a ParseException do pacote errado... é do java.text... Ta dando erro de compilação?