Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[EXCEPCION] org.apache.jasper.JasperException: jakarta.el.ELException: Failed to parse the expression [${ }]

Hola! tengo un problema, me tira la exception del titulo, el paso a paso fue el siguiente:

  1. Probar expression language
  2. Sorprenderme con la exception
  3. Darle vueltas al tema buscando información
  4. No encontrar nada relevante
  5. Borrar la expression language, escribir de nuevo "Empresa: <%= empresa.getNombre() %>, reiniciar el servidor Tomcat (tengo la version 10.1.8 ya que no estaba disponible para descargar ninguna 10.0.X), reiniciar el navegador donde hago las pruebas (brave)
  6. Sorprenderme PORQUE ME ARROJA LA MISMA EXCEPTION aun con todo reiniciado
  7. Reinicio PC, abro todo, levanto el servidor
  8. Y volver a sorprenderme porque la exception persiste...

Antes de escribir por primera vez la expression language el codigo funcionaba perfecto

les dejo codigos y log

Archivo web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="6.0">
  <display-name>gerenciador</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.jsp</welcome-file>
    <welcome-file>default.htm</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>NuevaEmpresaServlet</display-name>
    <servlet-name>NuevaEmpresaServlet</servlet-name>
    <servlet-class>com.alura.gerenciador.servlet.NuevaEmpresaServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>NuevaEmpresaServlet</servlet-name>
    <url-pattern>/nuevaempresa</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>ListaEmpresasServlet</display-name>
    <servlet-name>ListaEmpresasServlet</servlet-name>
    <servlet-class>com.alura.gerenciador.servlet.ListaEmpresasServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ListaEmpresasServlet</servlet-name>
    <url-pattern>/listaempresas</url-pattern>
  </servlet-mapping>
</web-app>

Archivo index.html (este es propio)

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

    <h1>Bienvenidos!</h1>

    <form action="/gerenciador/formNuevaEmpresa.html" method="POST">
        Registrar empresas:
        <input type="submit" value="Registro">
    </form>
    <form action="/gerenciador/listaempresas">
        Lista de empresas registradas
        <input type="submit" value="Lista">
    </form>


</body>
</html>

Codigo formNuevaEmpresa.html

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

    <form action="/gerenciador/nuevaempresa" method="POST">

        <p>
        Nombre de la empresa:
        </p>
        <input type="text" name="nombre" /> 
        <input type="submit"/>

    </form>

</body>
</html>

Codigo NuevaEmpresaServlet

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

        Empresa empresa = new Empresa(request.getParameter("nombre"));

        DB baseSimulada = new DB();

        baseSimulada.agregarEmpresa(empresa);

        PrintWriter out = response.getWriter();

        RequestDispatcher dispatcher = request.getRequestDispatcher("/nuevaEmpresaRegistrada.jsp");
        request.setAttribute("empresa", empresa.getNombre());
        dispatcher.forward(request, response);
    }

Codigo nuevaEmpresaRegistrada.jsp

<%@
    page language="java" 
        contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"
%>
<!-- con Expression language (${ }) ya no es necesario el jsp de abajo, lo dejo a modo de recordar -->

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

        Empresa ${ empresa } registrada

</body>
</html>

Codigo NuevaEmpresaServlet

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

        Empresa empresa = new Empresa(request.getParameter("nombre"));

        DB baseSimulada = new DB();

        baseSimulada.agregarEmpresa(empresa);

        PrintWriter out = response.getWriter();

        RequestDispatcher dispatcher = request.getRequestDispatcher("/nuevaEmpresaRegistrada.jsp");
        request.setAttribute("empresa", empresa.getNombre());
        dispatcher.forward(request, response);
    }

en estos momento, tengo mi codigo nuevaEmpresaRegistrada.jsp con justamente jsp y es igual, me da exception cuando la corro

DEJO LOG DE CONSOLA EN COMENTARIOS!!!

2 respuestas

LOG EXCEPTION

may 18, 2023 10:58:54 P. M. org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: El Servlet.service() para el servlet [NuevaEmpresaServlet] en el contexto con ruta [/gerenciador] 
lanzó la excepción [org.apache.jasper.JasperException: jakarta.el.ELException: Failed to parse the 
expression [${ }]] con causa raíz
org.apache.el.parser.ParseException: Encountered " "}" "} "" at line 1, column 4.
Was expecting one of:
    "{" ...
    <INTEGER_LITERAL> ...
    <FLOATING_POINT_LITERAL> ...
    <STRING_LITERAL> ...
    "true" ...
    "false" ...
    "null" ...
    "(" ...
    "[" ...
    "!" ...
    "not" ...
    "empty" ...
    "-" ...
    <IDENTIFIER> ...
    <IDENTIFIER> ...
    "(" ...

    at org.apache.el.parser.ELParser.generateParseException(ELParser.java:3897)
    at org.apache.el.parser.ELParser.jj_consume_token(ELParser.java:3747)
    at org.apache.el.parser.ELParser.Assignment(ELParser.java:315)
    at org.apache.el.parser.ELParser.Semicolon(ELParser.java:203)
    at org.apache.el.parser.ELParser.Expression(ELParser.java:196)
    at org.apache.el.parser.ELParser.DynamicExpression(ELParser.java:162)
    at org.apache.el.parser.ELParser.CompositeExpression(ELParser.java:46)
    at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:113)
    at org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:175)
    at org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:239)
    at org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:66)
    at org.apache.jasper.compiler.Validator$ValidateVisitor.prepareExpression(Validator.java:1658)
    at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:787)
    at org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:957)
    at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2377)
    at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2433)
    at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2439)
    at org.apache.jasper.compiler.Node$Root.accept(Node.java:469)
    at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2377)
    at org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1885)
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:229)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:396)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:396)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:642)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:408)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:340)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:277)
    at com.alura.gerenciador.servlet.NuevaEmpresaServlet.doPost(NuevaEmpresaServlet.java:45)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)

el log el mas grande pero el limite de palabras no me permite postear el log entero aunque creo que la parte importante es la primera, donde indica la exception

solución!

Solucionado para quien le interese el problema lo ocasionada el comentario

"< !-- con Expression language (${ }) ya no es necesario el jsp de abajo, lo dejo a modo de recordar -->"

del jsp "nuevaEmpresaRegistrada.jsp"