Если вы просто хотите получить поведение, подобное global="false"
, проще всего сделать переопределить соответствующую функцию в функции PrimeFaces Datatable.js и добавитьglobal: false
в опциях вызова ajax, который делается под капотом.
Это можно сделать, включив следующий javascript
PrimeFaces.widget.DataTable.prototype.loadLiveRows: function() {
if(this.liveScrollActive||(this.scrollOffset + this.cfg.scrollStep > this.cfg.scrollLimit)) {
return;
}
this.liveScrollActive = true;
this.scrollOffset += this.cfg.scrollStep;
//Disable scroll if there is no more data left
if(this.scrollOffset === this.cfg.scrollLimit) {
this.shouldLiveScroll = false;
}
var $this = this,
options = {
source: this.id,
process: this.id,
update: this.id,
global: false, /* Added this so the global is not triggered */
formId: this.cfg.formId,
params: [{name: this.id + '_scrolling', value: true},
{name: this.id + '_skipChildren', value: true},
{name: this.id + '_scrollOffset', value: this.scrollOffset},
{name: this.id + '_encodeFeature', value: true}],
onsuccess: function(responseXML, status, xhr) {
PrimeFaces.ajax.Response.handle(responseXML, status, xhr, {
widget: $this,
handle: function(content) {
//insert new rows
this.updateData(content, false);
this.liveScrollActive = false;
}
});
return true;
},
oncomplete: function(xhr, status, args, data) {
if(typeof args.totalRecords !== 'undefined') {
$this.cfg.scrollLimit = args.totalRecords;
}
$this.loadingLiveScroll = false;
$this.allLoadedLiveScroll = ($this.scrollOffset + $this.cfg.scrollStep) >= $this.cfg.scrollLimit;
// reset index of shift selection on multiple mode
$this.originRowIndex = null;
}
};
PrimeFaces.ajax.Request.handle(options);
},
К сожалению, нет возможности частично переопределить иповторно использовать большинство (все) из существующих функций.Я думал, что вы можете переопределить global
глобальным способом, поэтому никакой вызов ajax не вызовет глобальный статус.К сожалению, я не могу найти ссылку на то, как это сделать.
Однако вы можете переопределить поведение по умолчанию в отсутствие параметра global
, переопределив Primefaces.ajax.Request.handle
handle: function(cfg, ext) {
cfg.ext = ext;
if (PrimeFaces.settings.earlyPostParamEvaluation) {
cfg.earlyPostParams = PrimeFaces.ajax.Request.collectEarlyPostParams(cfg);
}
if(cfg.async) {
PrimeFaces.ajax.Request.send(cfg);
}
else {
PrimeFaces.ajax.Queue.offer(cfg);
}
},
Добавив явный параметрcfg.global
в ложь при отсутствии
var orgHandle = PrimeFaces.ajax.Request.handle;
Primefaces.ajax.Request.prototype.handle = function(cfg, ext) {
var global = (cfg.global === false || cfg.global === undefined) ? false : true;
cfg.global = global;
orgHandle(cfg, ext);
}
Выберите.