处理选项列表的重新排序

时间:2014-09-11 17:24:23

标签: primefaces

从Primefaces 5.0关于PickList组件的文档:

  

PickList提供传输作为默认且仅 ajax行为事件,当项目是   从一个列表移动到另一个列表。下面的示例演示了如何使用此事件。

但是,如果用户使用重新排序按钮(使用showTargetControls标志显示)更改了传输项目的顺序,我的用例要求我跟踪更改

我可以选择跟踪目标列表中元素的顺序吗?

编辑2015年1月:正如SJuan76评论所述:根据PF的5.1.9版本,API中添加了3个新事件:重新排序,选择,取消选择。资料来源:https://code.google.com/p/primefaces/issues/detail?id=5945

1 个答案:

答案 0 :(得分:4)

由于primefaces没有提供触发这些事件的界面,你必须提供自己的钩子。

由于这是一个常见问题,请按照以下方式进行操作。

在这种情况下,我会覆盖saveState函数,以便在任何选项列表修改(传输或排序)后触发您自己的事件。为此,使用以下脚本使用jquery extend覆盖primefaces javascript,最终修改提供的primefaces代码:

<script>
  (function($) {
    $.extend(PrimeFaces.widget.PickList.prototype, {
        _old_saveState : PrimeFaces.widget.PickList.prototype.saveState,
        saveState : function() {
            this._old_saveState();
            // TODO: call custom functionality here, such as calling a p:remoteCommmand
        }
    });
  })(jQuery);
</script>

最重要的是,您必须深入了解主要内容javascript以了解其实际情况。在主要版本的版本升级之后,请小心重新测试。