目前,jsp文件中有2个页面:其中一个显示数据,第二个用于分页。任务是在数据表上方包含完全相同的paginator表。对不起,忍不住画了:)
|-----------------------------------------|
| Page 2 of 200 < > |
|-----------------------------------------|
|-----------------------------------------|
| Some weird business data comes here |
|-----------------------------------------|
|-----------------------------------------|
| Page 2 of 200 < > |
|-----------------------------------------|
问题是:我如何做无耻复制?
答案 0 :(得分:3)
也许您可以在单独的jsp中定义分页内容,然后将其包含在主jsp中两次。例如:
<jsp:include page="pagination.jsp" flush="true" />
<table>...business data...</table>
<jsp:include page="pagination.jsp" flush="true" />
这样,如果您想要更改分页内容,可以只编辑pagination.jsp。
答案 1 :(得分:2)
今天在JSP中抽象的四种机制是jsp:include标记,&lt;%@ include&gt;指令,自定义标记库和自定义标记文件。
jsp:include插入执行另一个JSP页面的结果,所以你可以这样做:
<jsp:include "page_naviagtor.jsp"/>
<table id="results">...</table>
<jsp:include "page_navigator.jsp"/>
&lt;%@ include&gt;类似于jsp:include,除了它实际上并不执行代码,而是简单地将其标记到原始JSP源代码中,并使用页面的其余部分进行编译。
自定义标记库为您提供(几乎)JSP标记的全部功能,因此您可以执行以下操作:
<tag:wrap_in_page_nav>
<table id="results"> ... </table>
</tag:wrap_in_page_nav>
但是,这些要求您编写自定义Java代码。
对于大多数情况,最后的,坦率地说,最好的选择是JSP 2.0 Tag FIle。
标记文件是jsp:include和自定义标记之间的交叉。它们允许您执行类似于“wrap_in_page_nav”标记的操作,但实际上您使用JSP标记创建标记。
因此,在许多情况下,您可以简单地剪切出要重构的部分,然后将其粘贴到标记文件中,然后只使用标记。
page.tag
<%@tag description="put the tag description here" pageEncoding="UTF-8"%>
<%@ taglib prefix="t" tagdir="/WEB-INF/yourtags" %>
<%@attribute name="startPage" required="true"%>
<%@attribute name="endPage" required="true"%>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<tag:page_nav startPage="${startPage}" endPage="${endPage}"/>
<jsp:doBody/>
<tag:page_nav startPage="${startPage}" endPage="${endPage}"/>
</body>
</html>
page_nav.tag
<%@tag description="put the tag description here" pageEncoding="UTF-8"%>
<%@ taglib prefix="t" tagdir="/WEB-INF/yourtags" %>
<%@attribute name="startPage" required="true"%>
<%@attribute name="endPage" required="true"%>
<div>${startPage} .. ${endPage}</div>
最后,你的JSP
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ taglib prefix="t" tagdir="/WEB-INF/yourtags" %>
<tag:page startPage="1" endPage="4">
<table> ... </table>
</tag:page>
每个标记文件都具有JSP的全部功能,唯一的限制是当使用您自己的自定义标记文件时,您不能在自定义标记文件标记之间包含scriptlet代码(您可以使用普通的JSP标记,只是现在标签文件标签)。
标记文件是一种非常强大的抽象工具,可在JSP中使用。