2008-10-29 6 views
1

현재 jsp 파일에는 2 페이지가 있습니다. 그 중 하나는 데이터를 표시하고 두 번째 페이지는 페이지 매김에 사용됩니다. 작업은 데이터 테이블 위에 정확히 동일한 페이지 매김 테이블을 포함시키는 것입니다. 죄송합니다. 그리는 것을 거부 할 수 없었습니다. :)jsp 내의 동일한 테이블 인스턴스 2 개

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

질문 : 어떻게하면 좋겠 뻔뻔한 copypasting?

답변

2

JSP 내에서 추상화의 네 가지 메커니즘은 jsp : include 태그, < % @ include> 지시문, 사용자 정의 태그 라이브러리 및 사용자 정의 태그 파일입니다. JSP와 유사하다>

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

<퍼센트의 @은 다음과 같습니다 :

JSP는 : 포함 실제로 코드를 실행하지 않는 저장, 당신이 할 수 있도록, 삽입 또 다른 JSP 페이지를 실행 한 결과를 포함 오히려 원본 JSP 소스에 단순히 스탬프 처리하고 나머지 페이지와 함께 컴파일합니다. 그러나, 이들은 당신이 사용자 정의 Java 코드를 작성해야

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

: 당신이 뭔가를 할 수

사용자 정의 태그 라이브러리는 당신이 (거의) JSP 태그의 모든 기능을 제공합니다.

마지막으로 솔직히 말해서 대부분의 경우 가장 좋은 옵션은 JSP 2.0 태그 파일입니다.

태그 파일은 jsp : include 태그와 custom 태그 사이의 교차입니다. 이것들은 "wrap_in_page_nav"태그와 비슷한 것을 만들었지 만 실제로 태그는 JSP 마크 업을 사용하여 생성합니다.

그래서 대부분의 경우 리팩터링하려는 부분을 잘라내어 태그 파일에 붙여 넣은 다음 태그를 사용하면됩니다.

<%@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> 

마지막으로

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, 당신의 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 내에서 사용하기에 매우 강력한 추상화 도구입니다.

+0

<%@ include>으로 퇴장했습니다. – yanchenko

3

아마 당신은 별도의 JSP로 페이지 매김을 정의한 다음 메인 JSP에 두 번 포함시킬 수 있습니다. 예 :

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

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

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

이렇게하면 페이지 매김을 변경하려는 경우 pagination.jsp를 편집 할 수 있습니다.

+0

예. 이것은 나에게 좋은 소리. – Vinnie