Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Override a method from a Primefaces specific widget

I want to overwrite a function of Primefaces datatable component. According to this question: How do I find and/or override JavaScript in Primefaces component based on widgetVar? it is possible by using PrimeFaces.widget.DataTable.prototype.. But I want to override this function for one datatable only, not for all.

This does not work:

<p:dataTable widgetVar="myTable" ...>
</p:dataTable>
....
<script type="text/javascript">
       $(document).ready(function(){
           if (PF('myTable') !== undefined) {
                PF('myTable').jq.datatable({
                     showCellEditor: function (c) {
                         console.log('my function');
                     }
                 });
            }
         });
</script>

Is this how it is supposed to be done or am I completely wrong?

like image 492
sinclair Avatar asked Sep 22 '16 12:09

sinclair


1 Answers

Tested with one of my tables:

PF('myTable').showCellEditor = function() {
    console.log('my function')
}

Don't forget to call the generic implementation if you need to:

PF('myTable').showCellEditor = function() {
    console.log('my function')
    // call the generic implementation:
    PrimeFaces.widget.DataTable.prototype.showCellEditor.call(this);
}

See also:

  • Calling method using JavaScript prototype
  • Intro to Primefaces widgetvar
like image 197
Xtreme Biker Avatar answered Oct 30 '22 12:10

Xtreme Biker