我读过: Expression Language in JSP not working 但它略有不同。
使用EL进行引用文件的工作原理如下。
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath}/css/global.css"/>
但是当尝试使用带有EL表达式的JSP include标记时:
<jsp:include page="${pageContext.request.contextPath}/header.jsp" />
返回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)
我也确保启用EL。
<%@ page isELIgnored ="false" %>
我的tomcat版本是6.0,web.xml定义JSP是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">
有没有人知道为什么EL在jsp:include标签中使用时不能正常工作?
答案 0 :(得分:6)
EL工作正常。上下文路径已打印。但是您不需要前缀jsp:include page
前缀路径。它已经隐含地相对于上下文路径。它是不可能包含来自其他上下文的文件。您的方法最终会被包含在/head_first/head_first/include.jsp
中的文件中,因此不存在。