Reputation: 19071
I've read: Expression Language in JSP not working but it's slightly different.
Using EL for referencing file works fine like the one below.
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath}/css/global.css"/>
However when try to use JSP include tag with EL expression:
<jsp:include page="${pageContext.request.contextPath}/header.jsp" />
This returns http 500.
org.apache.jasper.JasperException: javax.servlet.ServletException: File "/head_first/header.jsp" not found
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:527)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
I also made sure to enable EL too.
<%@ page isELIgnored ="false" %>
My tomcat version is 6.0 and web.xml defines that JSP is 2.5
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
Does anyone know why EL not working ONLY when used in jsp:include tag?
Upvotes: 3
Views: 7346
Reputation: 1108802
EL is working fine. The context path is been printed. But you don't need prefix jsp:include page
with the context path. It's already implicitly relative to the context path. It is namely not possible to include files from other contexts. Your approach will end up in a file from /head_first/head_first/include.jsp
being included which thus doesn't exist.
Upvotes: 6