Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

class br.com.alura.gerenciador.db.Empresa cannot be cast to class java.lang.String

Beleza, galera?

Não estou conseguindo fazer o mesmo cast que o Nico faz na aula 4-6.

Empresa.java

package br.com.alura.gerenciador.db;

public class Empresa {

    private static int contaId = 1;
    private int id = 0;
    private String nome;

    public Empresa() {
        setId();
    }

    public int getId() {
        return id;
    }

    public String getNome() {
        return nome;
    }

    private void setId() {
        this.id = contaId;
        contaId++;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Override
    public String toString() {
        return this.nome;
    }

}

NovaEmpresaServlet.java

package br.com.alura.gerenciador.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.alura.gerenciador.db.Banco;
import br.com.alura.gerenciador.db.Empresa;

@WebServlet(urlPatterns = "/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String nomeEmpresa = request.getParameter("nome");
        Empresa empresa = new Empresa();
        empresa.setNome(nomeEmpresa);

        Banco banco = new Banco();
        banco.adiciona(empresa);

        RequestDispatcher requestDispatcher = request.getRequestDispatcher("/novaEmpresaCriada.jsp");
        request.setAttribute("empresa", empresa);
        requestDispatcher.forward(request, response);

        System.out.println("Cadastrando nova empresa");
    }

}

novaEmpresaCriada.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>

<%
    //scriptlet

    String nomeEmpresa = (String) request.getAttribute("empresa");
    System.out.println(nomeEmpresa);
%>

<html>
<head>
<meta charset="UTF-8">
</head>
<body>

    Empresa
    <%=nomeEmpresa%>
    cadastrada com sucesso!
</body>
</html>

console stacktrace: coloquei nesse Gist porque não cabia inteiro aqui.

Procurei um pouco e não consegui achar nada relacionado. Não entendi o que está saindo errado =/

1 resposta
solução!

Olá Vinicius!

Você precisa especificar que quer o nome da empresa e não o objeto Empresa.

Substitua isso:

RequestDispatcher requestDispatcher = request.getRequestDispatcher("/novaEmpresaCriada.jsp");
        request.setAttribute("empresa", empresa);
        requestDispatcher.forward(request, response);

Por isso:

RequestDispatcher requestDispatcher = request.getRequestDispatcher("/novaEmpresaCriada.jsp");
        request.setAttribute("empresa", empresa.getNome());
        requestDispatcher.forward(request, response);

Repare que setamos o atributo "empresa" para "empresa.getNome()".

Espero ter ajudado! :D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software