一尘不染

将JSP页面包含到另一个JSP页面中,如何避免多个HEAD / BODY部分?

jsp

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

正如slave.jsp有其自己的<head>用于处理JavaScript和CSS的部分一样,是否有一种方法或另一种方法可以将masterand
slave HEAD 的部分合并为一个?对 BODY 的部分也应该这样做。

我最近一直在使用 sitemesh, 但是我认为为每个页面设置模板是不切实际的。


阅读 433

收藏
2020-06-08

共1个答案

一尘不染

我通过在包含页面时传递 参数 来寻求解决方案。

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部分的重复项。

2020-06-08