如何从Omnifaces覆盖一些Javascript函数?

时间:2016-11-07 23:07:17

标签: jsf omnifaces

我想覆盖从Omnifaces的o:highlight组件调用的Javascript函数。我看到taglib调用了函数OmniFaces.Highlight

https://github.com/omnifaces/omnifaces/blob/develop/src/main/resources/META-INF/resources/omnifaces/highlight.unminified.js

如何覆盖此函数以使用我自己的实现?

我现在看到的唯一方法是覆盖Java类org.omnifaces.component.script.Highlight以调用另一个函数名。

还有另外一种方法吗?我不想覆盖所有课程内容,因为在下次更新Omnifaces时,我需要检查课程是否已更改。

1 个答案:

答案 0 :(得分:2)

只需在JavaScript上下文中重新定义该函数。

OmniFaces.Highlight.apply = function(clientIds, styleClass, doFocus) {
    // ...
}

加载 omnifaces.js后,您只需确保已定义此功能。您可以通过<h:outputScript target="head">内的<h:body>将您的脚本包含在内来确保这一点。

<h:head>
    ...
</h:head>
<h:body>
    <h:outputScript name="yourscript.js" target="head" />
    ...
</h:body>

或者,将issue发布给OmniFaces人员并让他们实现您想要更改的所需功能。