Pegar parâmetro de outra tela

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 ?

Amigo,
quando vc for colocar código use o e senão fica difícil de tentar entender o que vc está passando.
Perceba como ficou bem melhor:

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 :

[code]
<%@taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt”%>
<html>
<body>
<h3>Alterar tarefa - ${tarefa.id}</h3>

<form action=“altera” method=“post”>

<input type=“hidden” name=“tarefa.id” value="${tarefa.id}" />
Capíotulo Descrição:

<textarea name=“tarefa.descricao” cols=“100” rows=“5”>${tarefa.descricao}</textarea>


Finalizado?

<input type=“text” name=“tarefa.finalizado” />


Data de finalização:
<input type=“text”
name=“tarefa.dataFinalizacao”

value="<fmt:formatDate value="${tarefa.dataFinalizacao.time}" pattern=“dd/MM/yyyy” />" />


<input type=“submit” value=“Alterar” />

</form>
</body>
</html> [/code]

Porém eu não consigo pegar o ID . Segue o código :

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 ?

Agora depois de ter entendido o seu problema, para te ajudar eu preciso saber como está esse altera que você está mandando parâmetros do formulário.
Tem certeza que o seu formulário está acessando alguém que já possua uma ID?

Sim , tenho certeza que passa o id .

Alguma sugestão?