jsp中同一个表的2个实例

时间:2008-10-29 14:02:41

标签: java jsp

目前,jsp文件中有2个页面:其中一个显示数据,第二个用于分页。任务是在数据表上方包含完全相同的paginator表。对不起,忍不住画了:)

|-----------------------------------------|
|                      Page 2 of 200  < > |
|-----------------------------------------|
|-----------------------------------------|
|   Some weird business data comes here   |
|-----------------------------------------|
|-----------------------------------------|
|                      Page 2 of 200  < > |
|-----------------------------------------|

问题是:我如何做无耻复制?

2 个答案:

答案 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中使用。