【问题标题】:Omnifaces: Using CombinedResourceHandler with RichfacesOmnifaces:使用 CombinedResourceHandler 和 Richfaces
【发布时间】:2012-11-20 10:44:26
【问题描述】:

当在 Richfaces 应用程序中使用 CombinedResourceHandler 时,只会组合样式表和用户定义脚本。标准 JavaScript 资源和所有 Richfaces 特定资源保持为独立资源。

Omnifaces 文档指出:

RichFaces 在处理多个 JS 文件时存在同样的问题,但到目前为止,解决方法并不是很简单

所以我的问题是这个“重要的解决方法”会是什么?

据我所知,CombinedResourceHandlergetRendererType() 返回org.richfaces.renderkit.ResourceLibraryRenderer 时不会处理资源。然后由org.richfaces.renderkit.html.ResourceLibraryRenderer 处理。

我不确定在这里将 RichFaces 行为与 OmniFaces 结合起来的最佳方式是什么。

【问题讨论】:

    标签: jsf richfaces omnifaces combinedresourcehandler


    【解决方案1】:

    我能够通过修改 OmniFaces CombinedResourceHandler 创建解决方案。

    简而言之:

    Richfaces 利用了一个名为 ResourceLibrarys 的概念,这意味着资源可能不仅是单个文件,而是这些文件的集合。例如,RichFaces 使用名为 base-component.reslib 的资源。 RichFaces ResourceHandler 将此资源依赖解释为对

    的依赖
    • javax.faces:jsf.js
    • jquery.js
    • richfaces.js
    • richfaces-base-component.js

    因此,CombinedResourceHandler 需要一些额外的功能来从 Richfaces ResourceLibraries 中分离出对普通资源的依赖。后者需要根据从 RichFaces 来源获得的规范来解决。

    【讨论】:

      【解决方案2】:

      在不修改CombinedResourceHandler 本身的情况下解决这个问题并非易事。 CombinedResourceHandler 本身确实需要修改以使用从 RichFaces 的 org.richfaces.resource.ResourceLibraryFactoryImpl 中提取资源的反射黑客。为了让 OmniFaces 摆脱 RichFaces 依赖项,反射 hack 是必要的,这样它就可以与 PrimeFaces 等其他组件库一起使用。

      根据issue 107,这是在 1.3-20121206 中实现的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 2014-03-10
        • 2014-10-21
        • 1970-01-01
        相关资源
        最近更新 更多