创建JSP布局模板的最佳方法是什么?

40

可能是重复问题:
有哪些 JSP 技巧可以使模板更易于处理?

我刚开始使用 JSP 和 Servlets,想知道是否有一种简便的方法来创建一个布局 JSP 并在类似的 JSP 页面上重用它,就像 asp.net 的 master pages。

我在谷歌上搜索了一下,有些人说要使用模板,例如 jstl 标签库中提到的 http://java.sun.com/developer/technicalArticles/javaserverpages/jsp_templates 。这篇文章建议加入如下的标签:

<%@ taglib uri='/WEB-INF/tlds/template.tld' prefix='template' %>

但是我遇到了错误(因为jstl.jar和standard.jar位于WEB-INF/lib/目录下)。

然而,一些人表示根据这个Struts OR Tiles OR ???...... JSP模板解决方案,jstl模板存在问题。

我希望知道最好的方法来帮助我将页面布局拆分为像内容、标题等部分,并将这些部分设置在使用布局模板的页面中,就像asp.net master page一样。


1
可能的解决方案: 我不知道最好的方法。 - shareef
谢谢,我认为第一个链接很棒。 https://dev59.com/UHM_5IYBdhLWcg3wn0vT - Ashkan
这也可以通过jsp:include实现。Chad Darby在这个视频中解释得非常清楚,链接为https://www.youtube.com/watch?v=EWbYj0qoNHo。 - Sandeep Amarnath
1个回答

94
把以下代码放在WEB-INF/tags/genericpage.tag文件中。
<%@tag description="Overall Page template" pageEncoding="UTF-8"%>
<%@attribute name="header" fragment="true" %>
<%@attribute name="footer" fragment="true" %>
<html>
  <body>
    <div id="pageheader">
      <jsp:invoke fragment="header"/>
    </div>
    <div id="body">
      <jsp:doBody/>
    </div>
    <div id="pagefooter">
      <jsp:invoke fragment="footer"/>
    </div>
  </body>
</html>

要使用这个功能:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>

<t:genericpage>
    <jsp:attribute name="header">
      <h1>Welcome</h1>
    </jsp:attribute>
    <jsp:attribute name="footer">
      <p id="copyright">Copyright 1927, Future Bits When There Be Bits Inc.</p>
    </jsp:attribute>
    <jsp:body>
        <p>Hi I'm the heart of the message</p>
    </jsp:body>
</t:genericpage>

它确实做了你想象中的事情!

这是Will Hartung在此链接上给出的一个很好的答案的一部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接