我在Servlet上下文中存储了一些包含页面。我想动态地在JSP中包含一些页面,但我做不到。
<jsp:include page="<%=(String)application.getAttribute("headURL")%>"/>但是它给了我一个与引号相关的错误。我试着把它改成:
<jsp:include page="<%=(String)application.getAttribute(\"headURL\")%>"/>但两者都不起作用。
我怎么能这么做?
谢谢!
发布于 2016-12-14 21:31:04
就像这样:
<jsp:include page="${headURL}"></jsp:include>首先,Servlet容器将在页面范围中查找headURL,然后查找请求作用域,然后查找会话作用域,然后查找应用程序作用域(您的情况)
在调用headURL之前,必须将其设置为应用程序作用域的某个位置。
但我认为它必须是/WEB-INF/jspf/head.jspf (应用程序名称需要删除)
发布于 2016-12-14 21:17:05
可以使用表达式语言访问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的路径。
https://stackoverflow.com/questions/41149695
复制相似问题