Atributo da sessao esta retornando null

1 resposta Resolvido
T

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;

1 Resposta

T
Solucao aceita

Resolvido, eu deveria utilizar o req.getParameter(“localTxt”), e não req.getAtribute(“localTxt”);

Criado 20 de fevereiro de 2016
Ultima resposta 21 de fev. de 2016
Respostas 1
Participantes 1