How do I find and/or override JavaScript in Primefaces component based on widgetVar?

后端 未结 2 1556
清歌不尽
清歌不尽 2020-11-29 10:21

According to this question: Multiple file upload with extra inputText I can override JavaScript function of PrimeFaces element by using widgetVar in this way:



        
相关标签:
2条回答
  • 2020-11-29 11:03

    There are couple more solutions as well. Depends on how deep do you want to go.

    In my case I was intending to extend DataScroller's functionality.

    Despite it's too late answering your question, I hope the solutions below helps others:

    Solution #1 (extending current methods and adding your own ones)

    PrimeFaces.widget.DataScroller = PrimeFaces.widget.BaseWidget.extend({
        init: function(cfg) {
            this._super(cfg);
    
            // only for widget with widgetVar="yourWidgetVar"
            if(cfg.widgetVar === 'yourWidgetVar') {
                this.yourCustomMethod();
            }
        },
    
        yourCustomMethod: function() {
            // do whatever you prefer here
        }
    });
    

    Solution #2 (extending current methods)

    PF('yourWidgetVar').init = function() {
    
        // do whatever you prefer here
    
        // call the generic implementation
        PrimeFaces.widget.DataScroller.prototype.init.call(this);
    };
    
    0 讨论(0)
  • 2020-11-29 11:27

    You could use the prototype, for example overriding bindEditEvents would look like this

    PrimeFaces.widget.DataTable.prototype.bindEditEvents = function() {
      ....
    }
    
    0 讨论(0)
提交回复
热议问题