[英]Delaying Output of JSP Custom Tag?
我想延遲自定義標簽的輸出。
原因是:我想在文檔的開頭添加一個標簽,該標簽將編譯要包含在頁面中的樣式和腳本的列表。 頁面中的后續標簽將添加到元素列表中,並且在頁面主體生成后將打印該列表。
這可能還是有更好的方法來做到這一點。 (我不想知道在頁面編譯期間要添加哪些鏈接。)
謝謝
使用JSPContext pushBody()
和popBody()
您可以控制輸出順序。
<%
Writer body = new StringWriter();
out = pageContext.pushBody(body);
// following code will write to 'body' and not to client
%>
...
<%
out = pageContext.popBody();
// normal output again
%>
...
<% // write the captured output %>
<%= body %>
即使它可行,也可能會更好,因為它非常令人困惑。
我在各種網站上都問過這個問題,但沒有得到我想要的答案(盡管有些創意,謝謝!),所以我最終還是自己做了大量研究,以尋求“最佳”方法。做這個。 這是我想出的:
我創建了三個自定義標簽,因此我的html如下所示:
<html:page>
<html:head>
...
</html:head>
<html:body>
...
</html:body>
</html:page>
頁面標記在doStartTag()方法的REQUEST_SCOPE中創建一個稱為“ headercontents”的變量,該變量可以編譯我要放置在文檔頭部的輸出列表。
head元素只是將其所有正文內容添加到此變量中。
到目前為止,body元素什么也沒做,只有一個帶有simple的標記文件。
主體中的任何元素現在都可以使用“ headercontents”變量將信息發布到html頁面的頭部。 (因此,將所需的任何樣式表或腳本鏈接在頭部而不是正文中)。
然后,最后在頁面標簽的doEndTag()方法中,它打印“ headercontents”變量的內容,然后打印其自身的內容(html:body標記的內容)。
結果是文檔可以根據需要加載和重新排列。 這仍然是基本版本,但我會完善它,並在將來的某個時間發布源代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.