2016-12-14 145 views
0

我有一些包含页面存储在Servlet上下文中。我想动态地在JSP中包含一些页面,但是我不能。 我要做的就是:JSP包含动态页面

<jsp:include page="<%=(String)application.getAttribute("headURL")%>"/> 

但它给我相关的报价错误。我试图将其更改为:

<jsp:include page="<%=(String)application.getAttribute(\"headURL\")%>"/> 

但它都不起作用。

我该怎么做?

谢谢!

+0

是什么headURL的价值。它是一个真正的URL还是一个​​JSP文件的路径? – Loc

+0

这将是一个JSP文件的路径,如: /Project/WEB-INF/jspf/head.jspf – Ommadawn

回答

1

这样做:

<jsp:include page="${headURL}"></jsp:include> 

首先,Servlet容器将在页面范围内查找headURL,然后请求范围,那么会话范围,然后应用范围(你的情况)

headURL必须设置在调用JSP之前的某个地方进入Application范围。

,但我认为它必须是/WEB-INF/jspf/head.jspf(应用程序名称需要被移除)

1

您可以使用表达式语言来访问URL。所以你不需要逃避引号。

这里是你可以做这样一个例子:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 
    <c:set value="/WEB-INF/jspf/head.jspf" var="headURL" scope="application" /> 
    <jsp:include page="${headURL}"></jsp:include> 
</body> 
</html> 

位于/Project/WebContent/WEB-INF/jspf/head.jspf文件将被包括在内。编号:
此行仅供测试。我设置了上下文属性headURL

<c:set value="/WEB-INF/jspf/head.jspf" var="headURL" scope="application" /> 

你只需要:

<jsp:include page="${headURL}"></jsp:include> 

而且相到WebContent一个路径。

+0

但我不想在URL中写入“/WEB-INF/jspf/head.jspf”文件。我想从上下文属性中读取它。 – Ommadawn

+0

澄清添加。 –