4

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

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

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

4

1 回答 1

1

这个问题的答案很简单,同时也是一种解决方法。MyFaces 管弦乐队使用原始文件的包装器来对参数HttpServletResponse进行编码。contesationContext

使用 Orchestra 有两种选择 - 使用拦截器 (JSF) 和Filter. 如果响应尚未包装,他们俩都会尝试包装响应。因此,如果同时使用了 OrchestraFilter和拦截器,则最Filter触发,包装响应对象,并在请求中设置一个属性,向拦截器指示它不应该再次包装响应。

如果要添加,Filter可以将其配置为匹配特定的 URL 模式。conversationContext但是,对于我的需要,那个模式匹配器太简单了,所以我自己做了一个过滤器。所以为了告诉拦截器不要包装响应,所有要做的就是:

httpRequest.setAttribute(
                RequestParameterServletFilter.REQUEST_PARAM_FILTER_CALLED,
                Boolean.TRUE);
于 2009-12-17T20:12:36.427 回答