Estou estudando Spring MVC pela apostila da Caelum e estou obtendo o seguinte erro no projeto:
“Request processing failed; nested exception is java.lang.IllegalArgumentException:
Name for argument type [java.lang.Long] not available, and parameter name information not found in
class file either.”
O Eclipse aponta o erro na linha destacada do arquivo TarefasController.java
Alguém pode ajudar? Grato!!!
Segue os arquivos java:
— TarefasController.java —
@Controller
public class TarefasController {
...
...
@RequestMapping("mostraTarefa")
public String mostra(Long id, Model model) {
JdbcTarefaDao dao = new JdbcTarefaDao();
**model.addAttribute("tarefas", dao.buscaPorId(id)); <----- Erro**
return "tarefa/mostra";
}
}
— Tarefa.java —
public class Tarefa {
private Long id;
@NotNull @Size(min=5, message="Descrição deve ter pelo menos 5 carateres!")
private String descricao;
private boolean finalizado;
@DateTimeFormat(pattern="dd/MM/yyyy")
private Calendar dataFinalizacao;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public boolean isFinalizado() {
return finalizado;
}
public void setFinalizado(boolean finalizado) {
this.finalizado = finalizado;
}
public Calendar getDataFinalizacao() {
return dataFinalizacao;
}
public void setDataFinalizacao(Calendar dataFinalizacao) {
this.dataFinalizacao = dataFinalizacao;
}
}
— JbdcTarefaDao.java —
public class JdbcTarefaDao {
// a conexão com o banco de dados
private Connection connection;
public JdbcTarefaDao(Connection connection) {
this.connection = connection;
}
public JdbcTarefaDao() {
this.connection = new ConnectionFactory().getConnection();
}
// outro construtor e métodos do DAO
public void adiciona(Tarefa tarefa) {
...
...
}
public List<Tarefa> getLista() {
...
...
}
public void remove(Tarefa tarefa) {
...
...
}
public void buscaPorId(Long id) {
try {
PreparedStatement stmt = connection.prepareStatement("select "
+ "descricao from tarefas");
//stmt.setLong(1, tarefa.getId());
//stmt.setString(1, tarefa.getDescricao());
stmt.execute();
stmt.close();
} catch (SQLException e) {
//System.out.println("Message: " + e.getMessage());
throw new RuntimeException(e);
}
}
public void altera(Tarefa tarefa) {
...
...
}
}