繁体   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