2015-07-13 41 views
3

我在我的web應用程序的多個網頁結構如下。我想在頁碼之前和之後創建一個帶有固定代碼的模板頁面,然後將我的代碼放到每個不同的頁面中。問題是我應該在不同的文件中刪除divJSP包括導入代碼後和之前

<!-- fixed jsp code 
    <header> 
    <imports> ... 
    <div id="some-fixes-divs-inside"> 
--> 

    page code 

<!-- fixed jsp code 
    </div> 
    <other> 
    <footer> 
--> 

我知道會是這樣,但我認爲唯一的辦法是不要削減div是一個很好的做法:

<jsp:include page="fixed-jsp-code-head.jsp" /> 
    my page code 
<jsp:include page="fixed-jsp-code-footer.jsp" /> 

Q1:是否有在JSP中的任何指令或某事或任何其他框架來做到這一點?

Q2:如果第一Q是否定的,是我的解決方案一種不好的做法?

編輯:我想知道如果有喜歡<import>mycode</import>任何指令,必須在模板上的所有代碼,頁腳和頁眉和不開的頭一樣div和頁腳關閉,並將我的代碼放入模板中。

回答

2

你也可以使用Apache的瓷磚。它是一個模板組合框架。像this一樣。

首先定義一個模板:

<definition name="myapp.homepage" template="/layouts/classic.jsp"> 
    <put-attribute name="header" value="/tiles/banner.jsp" /> 
    <put-attribute name="menu" value="/tiles/common_menu.jsp" /> 
    <put-attribute name="body" value="/tiles/home_body.jsp" /> 
    <put-attribute name="footer" value="/tiles/credits.jsp" /> 
</definition> 

而在這之後在代碼中使用它:

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> 
<table> 
    <tr> 
    <td colspan="2"> 
     <tiles:insertAttribute name="header" /> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     <tiles:insertAttribute name="menu" /> 
    </td> 
    <td> 
     <tiles:insertAttribute name="body" /> 
    </td> 
    </tr> 
    <tr> 
    <td colspan="2"> 
     <tiles:insertAttribute name="footer" /> 
    </td> 
    </tr> 
</table> 
+0

謝謝,這正是我期待的Q1。 –

1

如果第一Q是否定的,是我的解決方案一種不好的做法?

在我看來,根據各自的功能來分離jsps是一種很好的做法。這會讓你的代碼鬆散耦合。在未來,如果你要更改頁眉/頁腳代碼,你將只在一個地方進行更改,減少了很多返工。

Q1:是否有任何指令或在jsp或任何其他框架 要做到這一點?

包括另一個JSP一個jsp的標準方法是使用

<%@include file="your jsp"/>(靜態包含)或

<jsp:include page="fixed-jsp-code-footer.jsp" />(動態包含)

您也可以使用JSTL標籤

`<c:import url=」http://www.example.com/foo/bar.html」 />` (dynamic include) 

它的工作原理很像,但它的功能更強大,靈活:不像其他兩種包含,url可以來自web Container外部!

+0

感謝響應。靜態包含比動態更快,c:import更強大,但也更重,因此只有在需要額外功能時纔會使用它。但我的問題是在兩個文件之間劃分DIV。在標題中,我應該打開它,並在頁腳中關閉。我想知道是否有任何指令,如 mycode 在模板中包含所有代碼頁腳和標題。 –