2016-12-14 182 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

澄清添加。 –