2016-11-07 48 views
1

我想重寫Omnifaces中從o:highlight組件調用的Javascript函數。我看到的taglib調用OmniFaces.Highlight可以在這裏的功能:如何從Omnifaces中重寫一些Javascript函數?

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:body>之內的<h:outputScript target="head">將函數包含在腳本中來確保這一點。

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

另外,發佈一個issue到OmniFaces人,讓他們來實現你intented改變所需的功能。