从静态资源(css,images)中删除MyFaces Orchestra的“conversationContext”GET参数

时间:2009-12-10 18:29:52

标签: java jsf myfaces orchestra

MyFaces Orchestra为页面上的每个资源添加?conversationContext=x。由于我没有将对话范围用于我项目的公共部分(仅适用于管理部分),我想摆脱该参数有两个原因:

  • 它打破了静态资源的浏览器缓存
  • 很丑:)

我现在要看一下Orchestra的源代码,也许会绕过一些东西,但如果有一个选项我最好不知道

1 个答案:

答案 0 :(得分:1)

这个问题的答案很简单,同时还有一些解决方法。 MyFaces管弦乐队使用原始HttpServletResponse周围的包装器来编码contesationContext参数。

使用Orchestra有两种选择 - 使用拦截器(JSF)和Filter。 他们两个都尝试包装响应,如果它还没有被包装。因此,如果同时使用了管道Filter和拦截器,Filter会被激活,包装响应对象,并在请求中设置一个属性,它向拦截器指示它不应该包裹再次回应。

如果要添加Filter,可以将conversationContext配置为匹配某个网址格式。但是,根据我的需要,该模式匹配器过于简单,所以我改为使用自己的过滤器。因此,为了告诉拦截器不要包装响应,所有必须做的就是:

httpRequest.setAttribute(
                RequestParameterServletFilter.REQUEST_PARAM_FILTER_CALLED,
                Boolean.TRUE);