【问题标题】:Editing the jsp content from a taglib从 taglib 编辑 jsp 内容
【发布时间】:2013-04-29 03:22:49
【问题描述】:

我有一个过滤器,它处理给定的 servlet 映射并包含一个保存每个页面结构的 JSP。

servletContext.getRequestDispatcher( "/index.jsp" ).include( request, response );

在 jsp 内部,我有一个自定义 jstl 标记,它根据一系列规则处理父级中另一个 JSP 部分的包含(包含在“body”标记内完成:

pageContext.include( ProcessURI.getJSPLocation( request.getRequestURI() ) );

在最新包含的 JSP 中,我希望能够编写样式表并附加到响应中。我为此使用了一个标记库。

<taglib:head>
    <link rel="stylesheet" href="some.css" >
</taglib:head>

由于最后一个 JSP 的内容包含在“body”标签中,我需要访问“head”并在最后一项之后插入 HTML(我无法在“body”标签内插入样式表)。

<head>
    ...
    <!-- I want to insert here -->
    <link rel="stylesheet" href="some.css" >
<head>
<body>
    ...

如何访问最后一个 taglib (taglib:head) 中的已处理响应,我可以在其中编辑其正文内容并将其插入到第一个包含的 jsp (/index.jsp) 中?

我想在给定的 taglib 调用之前可以访问已处理的响应,对吗?

我接受使用上述以外的其他技术实现相同结果的不同方式。

【问题讨论】:

  • 也许有可能,但我宁愿不去想...在您的标签之前生成的内容可能已经流式传输到客户端(响应缓冲区大小)。
  • 如何避免在评估 taglib 正文之前将内容流式传输到客户端?它应该是一种解决这个问题的方法,不会造成巨大的性能缺陷。
  • 迟早会成为性能瓶颈(你的应用服务器必须缓存整个响应!)。我会考虑重新设计...
  • 您对以其他方式达到相同结果的建议是什么?这里的目标是保留页面的头部和主体,这样我就可以专注于在主体内部进行开发。唯一的例外是样式表导入以及每个包含的一些自定义元标记。

标签: java jsp servlets jstl servlet-filters


【解决方案1】:

我已经解决了创建一个标签库来加载文件page.jsp 和另一个用于page-head.jsp 的问题。通过这种方式,我以正确的顺序处理数据,而无需进行一些疯狂的响应操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    相关资源
    最近更新 更多