Primefaces 处理拾取列表的重新排序
根据Primefaces 5.0中有关拾取列表组件的文档: PickList将传输作为默认值提供,并且只有当项目被激活时才会触发ajax行为事件 从一个列表移动到另一个列表。下面的示例演示如何使用此事件 但是,如果用户使用重新排序按钮(使用Primefaces 处理拾取列表的重新排序,primefaces,Primefaces,根据Primefaces 5.0中有关拾取列表组件的文档: PickList将传输作为默认值提供,并且只有当项目被激活时才会触发ajax行为事件 从一个列表移动到另一个列表。下面的示例演示如何使用此事件 但是,如果用户使用重新排序按钮(使用showTargetControls标志显示)更改了传输项目的顺序,则我的用例要求我跟踪更改 我有哪些选项可以跟踪目标列表中元素的顺序 2015年1月编辑:SJuan76评论指出:根据PF版本5.1.9,API中添加了3个新事件:重新排序、选择、取消选择。来源
showTargetControls
标志显示)更改了传输项目的顺序,则我的用例要求我跟踪更改
我有哪些选项可以跟踪目标列表中元素的顺序
2015年1月编辑:SJuan76评论指出:根据PF版本5.1.9,API中添加了3个新事件:重新排序、选择、取消选择。来源:由于primefaces不提供触发这些事件的接口,因此您必须提供自己的钩子 因为这是一个常见的问题,下面是你如何做到这一点 在这种情况下,我将重写saveState函数,以便在任何picklist修改(传输或排序)后触发您自己的事件。为此,请使用以下脚本使用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>
(函数($){
$.extend(PrimeFaces.widget.PickList.prototype{
_旧的保存状态:PrimeFaces.widget.PickList.prototype.saveState,
saveState:function(){
这个._old_saveState();
//TODO:在此处调用自定义功能,例如调用p:remoteCommmand
}
});
})(jQuery);
最重要的是,您必须深入了解primefaces javascript以了解真正的情况。在不同版本的primefaces之间升级后,请小心重新测试。这非常有效,谢谢!对于任何使用此技术的人,请确保脚本片段只被调用一次(注意jsf页面更新!),否则控制台中会出现“未捕获的RangeError:超过最大调用堆栈大小”javascript错误,钩子将无法工作;希望它能在5.2.0社区版中提供。