2013-02-05 166 views
0

我想在包含頁面中使用displaytag,但是我遇到了困難。 我有一個主網頁,其中包括標題JSPF,菜單JSPF並且取決於所選擇的菜單上的其他JSPF(上menu.jspf)在包含頁面中顯示標籤

main.jspf

<html><body> 
<table border="0"> 
    <tr> 
    <td colspan="2"><s:include value="header.jspf"/></td> 
    </tr> 
    <tr> 
    <td><s:include value="menu.jspf"/></td> 
    <td><s:include value="%{page}"/></td> 
    </tr> 
</table> 
</body></html> 

「其他」 JSPF (我改變「頁面」變量的值在Struts2的行動)

<%@ taglib prefix="display" uri="http://displaytag.sf.net" %> 
<%@ taglib prefix="s" uri="/struts-tags" %> 
<html> 
<link rel="stylesheet" href="./css/screen.css" type="text/css"/> 
<link rel="stylesheet" href="./css/displaytag.css" type="text/css"/> 
<body> 

    <display:table name="${usageList}" pagesize="2" requestURI="menu_admin_freq.action" sort="list" class="mars"> 
     <display:column property="nameBackendService" title="BackendService" sortable="true"/> 
     <display:column property="frequency" title="Frequency" sortable="true"/> 
    </display:table> 

</body></html> 

正如你可以看到我有一個完整的JSP頁面,我認爲是不是一個好主意。不過,當我試圖只包括一個片段(沒有<html><body>種元素),並把標籤庫元素融入DisplayTag表格不同並沒有出現......當我刪除了<html><body>元素和離開標籤庫之一,那麼我可以看到在網頁上的文本main.jsp中:"<%@ taglib prefix="display" uri="http://displaytag.sf.net" %>"

目前我有一個工作解決方案(通過在頁面中使用<html>,<body> a <%@ taglib>必須包含),但我認爲我的設計模式很糟糕。我應該如何解決這個問題? 謝謝, Viktor

回答

1

struts2 <s:include>標記包含servlet或JSP頁面的結果。如果要包含JSP片段,請使用JSP include指令<%@ include file="..." %>

對於使用<s:include>標籤重命名您的網頁.jsp和只放taglib指令(W/O <html><body>)與表一起包含的頁面。

+0

感謝Aleksandr的快速響應!我需要動態包含,因爲我知道<%@ include是用於靜態包含的。我對嗎?或者我知道不正確?謝謝,V。 – Viktor

+0

所以,只需將您的頁面重命名爲'.jsp'並使用''標籤即可。 –

+0

感謝Aleksandr,它的工作原理!你是對的,我只需要重命名爲.jsp。 V. – Viktor

1

您應該使用

<jsp:include page="mySnippet.jsp"/> 

其中mySnippet.jsp是部分JSP,沒有DTD,沒有頭,沒有身體,只有你所需要的HTML片段。

當需要時,在其中聲明標籤庫(struts標籤等)...

+0

謝謝安德烈亞斯,我不得不將.jspf重命名爲.jsp,它的工作原理!謝謝你,V。 – Viktor

相關問題