簡體   English   中英

延遲JSP自定義標簽的輸出?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM