一尘不染

JSP包含,在之前和之后导入代码

jsp

我的Web应用程序中的许多页面都具有以下结构。我想在页面代码之前和之后使用固定代码创建一个模板页面,然后将我的代码用于每个不同的页面。问题是我应该div在不同的文件中剪切。

<!-- fixed jsp code 
  <header>
  <imports> ...
  <div id="some-fixes-divs-inside">
-->

   page code

<!-- fixed jsp code
  </div>
  <other>
  <footer>
 -->

我知道的唯一方法就是这样,但是我认为削减divs 并不是一个好习惯:

<jsp:include page="fixed-jsp-code-head.jsp" />
    my page code
<jsp:include page="fixed-jsp-code-footer.jsp" />

Q1:在jsp或任何其他框架中是否有任何指令或其他东西可以做到这一点?

问题2:如果第一个问题不存在,我的解决方案是否是错误的做法?

编辑:
我想知道<import>mycode</import>模板中是否有任何指令想要包含所有代码页脚和页眉,并且不要div在页眉中打开相同的代码并在页脚中将其关闭,然后将我的代码放入模板中。


阅读 240

收藏
2020-06-10

共1个答案

一尘不染

您也可以使用Apache
Tiles。它是一个模板组成框架。像这样

首先,定义一个模板:

<definition name="myapp.homepage" template="/layouts/classic.jsp">
  <put-attribute name="header" value="/tiles/banner.jsp" />
  <put-attribute name="menu" value="/tiles/common_menu.jsp" />
  <put-attribute name="body" value="/tiles/home_body.jsp" />
  <put-attribute name="footer" value="/tiles/credits.jsp" />
</definition>

然后在代码中使用它:

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<table>
  <tr>
    <td colspan="2">
      <tiles:insertAttribute name="header" />
    </td>
  </tr>
  <tr>
    <td>
      <tiles:insertAttribute name="menu" />
    </td>
    <td>
      <tiles:insertAttribute name="body" />
    </td>
  </tr>
  <tr>
    <td colspan="2">
      <tiles:insertAttribute name="footer" />
    </td>
  </tr>
</table>
2020-06-10