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);
}
}