views:

130

answers:

1

I've read: http://stackoverflow.com/questions/2168832/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 &quot;/head_first/header.jsp&quot; 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?

+1  A: 

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.

BalusC
Thanks for the tip,I'm little confused here. I thought if I want to include a jsp file, something like <jsp:include page="foo.jsp" /> is used. Could you be more specific how can I fix this issue?
masato-san
Oh I think I got it. <jsp:include page="include.jsp" />
masato-san
Yes, you don't need to prefix it with the context path.
BalusC