我想将一个 JSP 页面包含到另一个 JSP 页面中。假设我有 master.jsp 那包括 slave.jsp.

作为 slave.jsp 有它自己的 <head> 处理 JavaScript 和 CSS 的部分,有没有一种方法或另一种方法来合并 masterslave s 部分变成一个单独的部分?也应该为 身体s 部分。

我一直在使用 站点网格 最近,但我认为为每个页面设置一个模板是相当不切实际的。

有帮助吗?

解决方案

我去该溶液通过使包括页面时的参数

在的 master.jsp

<head>
  blablabla
  <c:import url="slave.jsp">
    <c:param name="sectionName" value="HEAD" />
  </c:import>
</head>
<body>
  blablabla
  <c:import url="slave.jsp">
  </c:import>
</body>

,然后在的 slave.jsp 的参数被读出并在页面定制部分被呈现。

<c:choose>
  <c:when test="${param.sectionName == 'HEAD'}">
     head section here [without the <HEAD> tags !]
  </c:when>
  <c:otherwise>
     body section here [without the <BODY> tags !]
  </c:otherwise>
</c:choose>

不太高兴看到,但工作。以这种方式,我能够除去的HEADBODY份重复。

其他提示

你不能也不应该合并两个 <html> 彼此的文档。这会产生无效的输出。更好地在以下帮助下有条件地包含 CSS/JS JSTL c:if 或者 c:choose 标签。

基本示例:

<head>
    <script type="text/javascript" src="global.js"></script>
    <c:if test="${isAdminPage}">
        <script type="text/javascript" src="admin.js"></script>
    </c:if>
</head>

的sitemesh之外,你几乎出于运气。但是,如果你认为每页的设置是不切实际的我会重新考虑你的设计。您的应用程序将多少页?

您还可以扩展条件选项,并进行 meta.jsp (例如),其中包含 Map 对于每个 head 元素 - 元标记、css href、脚本 href,并使用 jsp 的名称作为该 Map 中的键。然后你打电话 request.getRequestURI(), ,并显示您在地图中该键下放置的任何内容。这不是一个非常漂亮的解决方案,但是有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top