estou seguindo a apostila da Caelum e estou na parte de CRUD, estou tentando implementar uma lógica que registra um nova Tarefa e atualiza uma nova Tarefa. Já consegui registrar uma Nova Tarefa. e atualizar tarefa. Ou seja, após eu conseguir atualizar uma nova não estou conseguindo mais salvar uma nova Tarefa, Segue meu codigo.
O problema é que esta sendo enviado isso na hora que for uma nova Tarefa
<input type="hidden" name="id" value="${tarefa.id}">
No caso aparece : NumberFormatException: For input string: “”
como resolver isso
<c:import url="/WEB-INF/jsp/template/cabecalho.jsp" />
<article>
<fieldset>
<legend>
<c:if test="${tarefa.id != null}">
ALTERANDO TAREFA ${tarefa.id}
</c:if>
<c:if test="${tarefa.id == null}">
CADASTRANDO NOVA TAREFA
</c:if>
</legend>
<form action="mvc?logica=AdicionaAlteraTarefaLogic" method="post">
<input type="hidden" name="id" value="${tarefa.id}">
Titulo: <input type="text" name="titulo" value="${tarefa.titulo != null ? tarefa.titulo : ''}"> <br />
Descricao: <textarea rows="4" cols="20" name="descricao" maxlength="200"> ${tarefa.descricao != null ? tarefa.descricao : ""}</textarea><br />
Data: <geraData:campoData id="data" /> <br />
Status: <select name="situacao">
<c:forEach items="${situacoes}" var="s">
<option value="${s.situacao}">${s.situacao}</option>
</c:forEach>
</select><br />
<input type="submit" value="Gravar">
</form>
</fieldset>
</article>
<c:import url="/WEB-INF/jsp/template/rodape.jsp" />
Logica
public class AdicionaAlteraTarefaLogic implements Logica {
@Override
public String executa(HttpServletRequest request, HttpServletResponse response) throws Exception {
Usuario usuarioLogado = (Usuario) request.getSession().getAttribute("usuarioLogado");
if(usuarioLogado != null){
Connection connection = (Connection) request.getAttribute("connection");
Calendar dataTarefa = Calendar.getInstance();
TarefaDAO tarefaDAO = new TarefaDAO(connection);
String id = request.getParameter("id");
String titulo = request.getParameter("titulo");
String descricao = request.getParameter("descricao");
String data = request.getParameter("data");
String situacao = request.getParameter("situacao");
converteStringParaDate(dataTarefa, data);
Tarefa tarefa = criaTarefa(titulo, descricao, situacao,dataTarefa, usuarioLogado);
if(id != null){
tarefa.setId(Integer.parseInt(id));
tarefaDAO.atualizaTarefa(tarefa);
return "mvc?logica=ListarTarefaLogic";
}else if(id == null){
tarefaDAO.adicionarTarefa(tarefa);
return "mvc?logica=AdicionaTarefa";
}
}
return "login.jsp";
}
private Tarefa criaTarefa(String titulo, String descricao, String situacao,Calendar dataTarefa, Usuario usuarioLogado) {
Tarefa tarefa = new Tarefa();
tarefa.setTitulo(titulo);
tarefa.setDescricao(descricao);
tarefa.setData(dataTarefa);
tarefa.setSituacao(ConverterStringPorEnum.converterSituacao(situacao));
tarefa.setIdUsuario(usuarioLogado.getId());
return tarefa;
}
private void converteStringParaDate(Calendar dataTarefa, String data) throws ParseException {
Date dataConvertida = new SimpleDateFormat("dd/MM/yyyy").parse(data);
dataTarefa.setTime(dataConvertida);
}
}