我有一个primefaces数据滚动器,用于显示一个简单列表和一组可以过滤该列表的过滤器。

一切都在RequestScoped bean上,我试图避免使用view / session bean,因为它是一个b2c网站,应该有很多访问者。

我的问题是,当我过滤列表时,一切正常,但是当我向下滚动时,过滤器状态丢失(未在bean中设置过滤器)。

我几乎可以肯定这是因为datascroller使用的是部分进程(javax.faces.partial.execute),因此不会处理过滤器...但是datascroller没有用于此的选项。有任何想法吗?

谢谢

最佳答案

我终于以快速而肮脏的方式做到了。 Datascroller似乎没有发送额外参数的选项。

(我更改了加载功能,因此进程发送@all而不是this.id)

    PF('datascroll').load= function() {
    this.loading = true;
    this.cfg.offset += this.cfg.chunkSize;
    this.loadStatus.appendTo(this.loaderContainer);
    if (this.loadTrigger) {
        this.loadTrigger.hide()
    }
    var b = this, a = {source: this.id, process: '@all', update: this.id, global: false, params: [{name: this.id + "_load", value: true}, {name: this.id + "_offset", value: this.cfg.offset}], onsuccess: function(e, c, d) {
            PrimeFaces.ajax.Response.handle(e, c, d, {widget: b, handle: function(f) {
                    this.list.append(f)
                }});
            return true
        }, oncomplete: function() {
            b.loading = false;
            b.allLoaded = (b.cfg.offset + b.cfg.chunkSize) >= b.cfg.totalSize;
            b.loadStatus.remove();
            if (b.loadTrigger && !b.allLoaded) {
                b.loadTrigger.show()
            }
        }};
    PrimeFaces.ajax.AjaxRequest(a)
}

10-06 01:37