首页 > 解决方案 > Primefaces中组件的补丁

问题描述

我正在使用 Primefaces 6.2,因为我们的项目仍在 JDK 6 上运行。计划迁移到 JDK 8+,但短期内不可能。这意味着我无法迁移到更高版本的 primefaces。

在 Primefaces 6.2 中,自动完成功能存在一个小错误,我想通过修改 autcomplete.js 文件来修复它。

是否可以从生成的 components.js 文件中删除文件( autocomplete.js )并提供自定义文件?

我已经看到 primefaces 压缩了 JS 文件并将它们全部添加到文件 components.js 中。

因此,我需要阻止文件被添加/压缩,然后找到一种方法来添加我的文件。

标签: jsfprimefaces

解决方案


您可以覆盖它或使用omnifacesCDNResourceHandler并将primefaces 资源指向您可以直接编辑文件的目的地。

JS 覆盖示例

if(PrimeFaces.widget.OverlayPanel)
{
    // use proxy pattern to not duplicate original code
    (function() 
    {
        var proxied = PrimeFaces.widget.OverlayPanel.prototype.applyFocus;

        PrimeFaces.widget.OverlayPanel.prototype.applyFocus = function()
        {
            if (this.jq.hasClass("disable-autofocus"))
                return;

            return proxied.apply(this, arguments); 
        };
    })();
}

CDNResourceHandler

您可以使用 OmniFaces 的 CDN 资源处理程序更改primefaces资源查找。将原始 javascript 文件复制到其他位置,对其进行编辑并在 Web 配置中设置 CDN 处理程序,例如:

primefaces:components.js=/resources/primefaces/6.2/components.js `


推荐阅读