Olá, estou tendo dificuldade para recuperar o valor preenchido em um formulário. Segue meu código:
formulario html para capturar os valores digitas pelo usuario e criar um novo objeto Sessao que no caso deste projeto significa uma sessao de fotos.;
`<div class="row">
<div class="col-md-6">
<form action="executa" class="form-group">
<h3 class="text-success">Adicionar sessão</h3>
<label class="control-label" id="local">Local</label>
<input class="input-group" type="text" name="localTxt">
<label class="control-label" id="date">Data</label>
<input class="input-group" type="date" id="date">
<input type="hidden" name="tarefa" value="NovaSessao">
<input class="btn-default" type="submit" value="Enviar">
</form>
</div>
</div>
classe NovaSessao
public class NovaSessao implements Tarefa{
@Override
public String executa(HttpServletRequest req, HttpServletResponse resp) {
System.out.println("Dentro da classe NovaSessao");
try(Connection conn = new br.com.alura.gerenciador.jdbc.ConnectionPool().getConnection()){
HttpSession sessao = req.getSession();
System.out.println("valor do local"+ sessao.getAttribute("localTxt"));//AQUI O LOCAL ESTA ROTORNANDO NULL
if(req.getAttribute("localTxt") != null){
String local = (String)req.getAttribute("localTxt");
Date data = (Date)req.getAttribute("date");
Sessao novaSessao = new Sessao(local , data);//objeto do meu projeto
new SessaoDAO(conn).salvarSessao(novaSessao);
return "/WEB-INF/paginas/painelAdm.jsp";
}
return "/WEB-INF/paginas/painelAdm.jsp";
}catch (SQLException ex) {
Logger.getLogger(NovaSessao.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
}
interFaceTarefa
public interface Tarefa {
String executa(HttpServletRequest req, HttpServletResponse resp);
}
e finalmente o servlet Controller
@WebServlet(urlPatterns = "/executa")
public class Controller extends HttpServlet {
@Override
public void init() throws ServletException {
super.init();
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Dentro do metodo service classe Controller");
System.out.println("Tarefa: "+req.getParameter("tarefa"));
/* LOGICA DE NEGOCIO DE ACORDO COM A TAREFA PASSADA NO REQUEST */
String tarefa = req.getParameter("tarefa");
if(tarefa == null) throw new IllegalArgumentException("Argumento inválido para tarefa");
tarefa = "br.com.alura.gerenciador.web.tarefas." + tarefa;//(NOME DA CLASSE )
Class<Tarefa> tipo;
try {
tipo = (Class<Tarefa>) Class.forName(tarefa);//recuperou a classe de forma abstrata (nao instanciada)
System.out.println("Tipo:"+tipo);
Tarefa instancia = (Tarefa) tipo.newInstance();//classe que foi recuperada é instanciada(ANTIGO SERVLET)
String pagina = instancia.executa(req, resp);//excecuta o metodo correspondente na classe passada como parametro , e retorna o caminho para o dispactcher
System.out.println("Direcionando para pagina: " + pagina);
/*REDIRECIONAMENTO DE ACORDO COM A RESPOSTA DO METODO SERVICE INVOCADO PELAS CLASSE QUE A IMPLEMENTAM */
RequestDispatcher dispatcher = req.getRequestDispatcher(pagina);
dispatcher.forward(req, resp);
} catch (ClassNotFoundException | InstantiationException ex) {
Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
System.out.println("USUARIO NÃO PASSOU A TAREFA");
} catch (NullPointerException e){
e.printStackTrace();
}
}
@Override
public void destroy() {
super.destroy();
}
}
Na classe novaSessao, o valor do atributo cujo name=“localTxt” que deveria ser o valor que usuario digitou como local, está retornano null ://
Se puderam me ajudar a identificar o erro eu agradeço, obrigado a todos;