【发布时间】:2011-03-11 05:38:42
【问题描述】:
对于许多现在不计算在内的内部问题,我们有一个 Servlet 过滤器,它可以更改 application/xhtml+xml 的所有结果并重写为 text/html;charset=UTF-8,因此即使使用 facelets,它也可以在 IE 6.0 上正常工作。
我的问题是关于 HtmlResponseWriter,它是负责渲染的组件。是否可以扩展它并覆盖它的方法,以便我们实现过滤器的预期效果?
- 内容类型将始终输出为 text/html;
- 编码将始终为
UTF-8; - 脚本标签将被包裹在
< ! -- <[[CDATA ]]> -->中。
提前致谢。
【问题讨论】:
-
application/xhtml+xml究竟来自哪里?默认情况下,标准 JSF/Facelets 不会发出它。为什么不直接修复它而不是覆盖渲染器? -
你好 BalusC,模板包含
,将 cdata 包含在 javascript 中,但欺骗浏览器(实际上是 IE-6)读取以文本/html 的形式响应。因此,所有产生 text/html 响应的请求都作为 application/xhtml+xml 提供,但过滤器将其设置为 text/html。我会寻找更多信息以更好地回答您的考虑。 -
我只是充当
text/html并将JS 移动到它自己的.js文件中,您可以通过<script src="file.js">加载该文件。顺便说一句:在 cmets 中使用@nickname像@BalusC会自动通知特定用户有关特定 cmets。在我浏览这个主题之前我没有看到你的评论:) -
ohhh @BalusC 对不起:/,所以我和过滤器后面的一些人聊天,他向我解释说,我们必须使用 CDATA 和一些标签提供内联 js,就像我们使用“app/xhtml”一样+xml" 所以这就是为什么模板被设置为此内容类型并且过滤器将其更改为 text/html。所以我的问题仍然存在,是否可以覆盖 HtmlResponseWriter?
-
是的,但无论如何使用
application/xhtml+xml是没有意义的。您可以将其设置为text/html。它会工作得很好,你不需要覆盖作家。
标签: java jsf components render