Olá .
Estou com uma dúvida quanto a pegar um campo em uma tela.
Estou tentando fazer um método de alterar e na minha query eu necessito do ID para alterar.
Gostaria de pegar esse id na tela . De alguma forma em que ele já esteja na tela , que o usuario não precise coloca-lo.
Na minha JSP eu deixei ele como hidden para poder pegar na outra classe , segue a JSP :
view plaincopy to clipboardprint?
<%@taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt”%>
Alterar tarefa - ${tarefa.id}
<form action="altera" method="post">
<input type="hidden" name="tarefa.id" value="${tarefa.id}" />
Capíotulo Descrição:<br />
<textarea name="tarefa.descricao" cols="100" rows="5">${tarefa.descricao}</textarea>
<br />
Finalizado?
<input type="text" name="tarefa.finalizado" />
<br />
Data de finalização: <br /> <input type="text"
name="tarefa.dataFinalizacao"
value="<fmt:formatDate value="${tarefa.dataFinalizacao.time}" pattern="dd/MM/yyyy" />" />
<br />
<input type="submit" value="Alterar" />
</form>
Porém eu não consigo pegar o ID . Segue o código :
view plaincopy to clipboardprint?
public void altera(Tarefa tarefa){
String sql = "update tab_tar set descricao=?, finalizado=?, dataFinalizacao=? where id=?";
try {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1,tarefa.getDescricao() );
stmt.setString(2, tarefa.getFinalizado());
java.sql.Date dt = new java.sql.Date(tarefa.getDataFinalizacao().getTimeInMillis());
stmt.setDate(3, dt);
stmt.setLong(4, tarefa.getId());
stmt.execute();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
Ele gera NULLPOINTER nessa linha : stmt.setLong(4, tarefa.getId());
É como se eu não tivesse pego o parâmetro …
Alguém pode me dar uma luz ?