我试图说服 SiteMesh 装饰器更改响应的内容类型,但没有任何乐趣。content-type 最终总是与被装饰的 JSP 相同,而不是与装饰器相同。
例如,假设我有一个带有标题的 JSP
<%@ page contentType="application/xhtml+xml" %>
我还有一个 SiteMesh 装饰器 JSP,它定义了这个:
<%@ page contentType="application/vnd.wap.xhtml+xml" %>
我想要的是装饰响应具有装饰器的 mime 类型(这里使用的实际 MIME 类型并不重要,这只是为了说明问题)。
对 SiteMesh 2.4.1 源的挖掘表明,问题出在ContentBufferingResponse
类上,该类负责捕获目标的输出。这将覆盖该setContentType()
方法,记录值以供以后使用,但它也调用super.setContentType()
,有效地将目标 JSP 的内容类型直接传递给响应。一旦这样做了,再多的哄骗也无法说服对方不这样做。
那么有没有解决方法呢?是否可以抑制目标 JSP 的内容类型,并取而代之从装饰器中获取?