【问题标题】:CombinedResourceHandler excluded resources doesn't recognize resources with query stringCombinedResourceHandler 排除的资源无法识别带有查询字符串的资源
【发布时间】:2015-06-26 08:54:53
【问题描述】:

我有几个我不想合并的 CSS 文件,但我也想破坏这些资源的缓存,所以我声明它们:

<h:outputStylesheet name="css/styles.css?version=#{startup.time}" />

在我添加 CombineResourceHandler 之前它运行良好。现在新的处理程序无法识别资源的名称,我不能使用通配符来排除这些资源,例如:

<context-param>
    <param-name>org.omnifaces.COMBINED_RESOURCE_HANDLER_EXCLUDED_RESOURCES</param-name>
    <param-value>css/styles.css*</param-value>
</context-param>

如果我删除版本参数,我必须对这些文件进行版本控制,这是我想避免的。

关于如何以最简单的方式实现这一点的任何想法?

【问题讨论】:

  • CombinedResourceHandler 具有内置缓存清除功能。所以你可以从你的资源名称中删除它们。让我知道这是否足够。
  • 不,这还不够,我会尝试看看这堂课,看看发生了什么
  • 这是一个被排除的资源(我需要排除它),所以我想这是它没有破坏它的原因。
  • 好的,我明白了。好吧,我只是简单地看了一下,但 Mojarra 不喜欢输出样式表资源名称中的查询字符串,只是返回了 RES_NOT_FOUND。也许您正在使用 MyFaces?无论如何,在每个 JSF 问题中始终提及您正在使用哪个 JSF impl/version。
  • 是的,我正在使用 myfaces。对不起,我的错。

标签: jsf jsf-2.2 myfaces omnifaces combinedresourcehandler


【解决方案1】:

OmniFaces 通过内部ResourceIdentifier 类识别资源。它没有考虑任何查询字符串、路径参数或路径片段。根据this commit,此问题已得到修复。今天最新的2.2-SNAPSHOT 中提供了该修复程序。

在排除(和抑制)资源上下文参数中支持通配符模式将是feature request 的良好候选者。

【讨论】:

    猜你喜欢
    • 2018-11-29
    • 2020-12-10
    • 2011-04-18
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多