Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida no Ex. 1 da Aula 12 - Um padrão de controle

Ao fazer o get na tarefa de alguma classe, uma mesma exception sempre é lançada. Exemplo: ao acessar a URI http://localhost:8080/gerenciador/fazTudo?tarefa=BuscaEmpresas a seguinte exception é lançada: HTTP Status 500 - javax.el.PropertyNotFoundException: Property 'id' not found on type java.util.HashMap$Values

O mesmo ocorre para as demais classes que eu passar.

Segue a classe fazTudo:

@WebServlet(urlPatterns = "/fazTudo")

public class FazTudo extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String tarefa = req.getParameter("tarefa");

        if (tarefa == null) {
            throw new IllegalArgumentException("Você esqueceu de passar a tarefa!");

        }

        tarefa = "br.com.alura.gerenciador.web." + tarefa;

        try {

            Class type = Class.forName(tarefa);
            Tarefa2 instancia = (Tarefa2) type.newInstance();
            String pagina = instancia.executa(req, resp);

            RequestDispatcher dispatcher = req.getRequestDispatcher(pagina);
            dispatcher.forward(req, resp);

        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
            throw new ServletException(e);

        }

    }

}
2 respostas

Bruno .

vi algumas coisas interessante de trocar , pois está confuso algumas coisas .

nesse trecho .

 tarefa = "br.com.alura.gerenciador.web." + tarefa;

acho interessante , colocar assim :

String nomeDaClasse = "br.com.alura.gerenciador.web." + tarefa;

neste ponto está faltando o o generic na classe :

Class type = Class.forName(tarefa);

coloque assim :

Class<?> type = Class.forName(tarefa);

faça essas alterações e veja se o erro continua , qualquer coisa coloque o erro aqui .

Espero ter ajudado , Bons Estudos

solução!

Na verdade nas minhas classes havia alguns erros. Após corrigi-los, o problema foi solucionado. Obrigado, Celso!