0
respostas

[Dúvida] Problema ao usar inteiros - JSP

Eu estou atualmente aprendendo a usar arquivos JSP e, ao usar um request do meu servlet, eu tentei usar um inteiro no código java dentro do JSP, mas estou me deparando com este problema: se eu usar a seguinte linha de código Integer idEmpresa = (Integer) request.getAttribute("id"); eu, obviamente, vou obter o seguinte erro ao tentar acesso a esse arquivo pelo navegador:

java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Integer (java.lang.String and java.lang.Integer are in module java.base of loader 'bootstrap')

Afinal o certo seria eu usar o Integer.parseInt(String), e foi o que eu fiz em Integer idEmpresa = Integer.parseInt(request.getAttribute("id"));, mas então eu recebo outro erro na execução, a partir dessa mesma linha de código, que é:

The method parseInt(String) in the type Integer is not applicable for the arguments (Object)

Alguém pode me ajudar a entender onde estou errando?

Código do meu JSP:

<%
    String nomeEmpresa = (String) request.getAttribute("nome");
    Integer idEmpresa = Integer.parseInt(request.getAttribute("id")); 
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

id: <%= (idEmpresa) %> | Nome da empresa: <%= (nomeEmpresa) %>

</body>
</html>

código do meu servlet, caso alguém queira checar:

public class ServletExample extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter printer = response.getWriter();
        String nomeEmpresa = request.getParameter("nome");
        String idEmpresa = request.getParameter("id");

        RequestDispatcher rd = request.getRequestDispatcher("/novoRegistro.jsp");
        request.setAttribute("nome", nomeEmpresa);
        request.setAttribute("id", idEmpresa);
        rd.forward(request, response);
    }

}

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