Как я могу переопределить некоторые функции Javascript из Omnifaces?

Я хочу переопределить функцию Javascript, вызываемую из o:highlight компонент от Omnifaces. Я вижу, что 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 ответ

Решение

Просто переопределите функцию в контексте 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>

Кроме того, можно опубликовать вопрос для ребят из OmniFaces и попросить их реализовать желаемую функциональность, которую вы намеревались изменить.

Другие вопросы по тегам