2 экземпляра одной и той же таблицы внутри jsp - PullRequest
1 голос
/ 29 октября 2008

В настоящее время есть 2 страницы в файле jsp: одна из них отображает данные, а вторая используется для разбивки на страницы. Задача состоит в том, чтобы включить точно такую ​​же таблицу страниц над таблицей данных. Извините, не удержался, чтобы нарисовать его:)

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

Вопрос: как мне сделать это без постыдного копирования?

Ответы [ 2 ]

3 голосов
/ 29 октября 2008

Возможно, вы можете определить нумерацию страниц в отдельном jsp, а затем дважды включить его в свой основной jsp. Например:

<jsp:include page="pagination.jsp" flush="true" />

<table>...business data...</table>

<jsp:include page="pagination.jsp" flush="true" />

Таким образом, если вы захотите изменить нумерацию страниц, вы можете просто отредактировать pagination.jsp.

2 голосов
/ 29 октября 2008

На сегодняшний день в JSP существует четыре механизма абстрагирования: тег jsp: include, директива <% @ include>, библиотеки пользовательских тегов и файлы пользовательских тегов.

jsp: include вставляет результаты выполнения другой страницы JSP, так что вы можете сделать:

<jsp:include "page_naviagtor.jsp"/>
<table id="results">...</table>
<jsp:include "page_navigator.jsp"/>

<% @ include> аналогичен jsp: include, за исключением того, что он на самом деле не выполняет код, а просто печатает его в исходном источнике JSP и компилирует с остальной частью страницы.

Пользовательские библиотеки тегов дают вам (почти) всю мощь тегов JSP, поэтому вы можете сделать что-то вроде:

<tag:wrap_in_page_nav>
    <table id="results"> ... </table>
</tag:wrap_in_page_nav>

Однако для этого требуется написать собственный код Java.

Последний и, честно говоря, лучший вариант для большинства случаев - это файл тегов JSP 2.0.

Файлы тегов представляют собой нечто среднее между 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, единственным ограничением является то, что при использовании собственного файла пользовательских тегов вы не можете включать код скриптлета между своими тегами файла пользовательских тегов (вы можете использовать обычные теги JSP, только сейчас теги файлов тегов).

Файлы тегов - очень мощный инструмент абстракции для использования в JSP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...