p:tree: 取消select事件
p:tree: cancel select event
如果某个条件为真,是否有办法在 primefaces p:tree
中取消节点的 select 事件?
我想显示一个对话框,如果用户选择 "cancel" 选项,则不应更改 selection。
我尝试从 p:ajax 调用 javascript 函数,但新节点无论如何都是 selected。
<p:ajax event="select" onstart="showDialog()"/>
我必须覆盖 Primefaces 树的默认行为吗?
PF6.2
如果您想取消请求,您需要在 onstart
中明确 return 一个 false
。
onstart="return false;"
将取消请求。这意味着您需要 return 来自 showDialog AND 的 true 或 false return 显式 return 该值在开始时。所以
onstart="return showDialog();"
您接下来的挑战是如何 'delay' 此 javascript 函数的 return 以便您可以提供用户操作的 return 值。
我终于想出了另一个解决方案:我已经覆盖了 'nodeClick' Primefaces VerticalTree 小部件,这样我就可以选择显示对话框或继续选择。
举个例子:
var param0, param1,param2;
function init() {
PF('treeWidgetVar').nodeClick = function (b, a) {
param0 = this;
param1 = b;
param2 = a;
if(checkSomeCondition() == 'true'){
showMyDialog();
return;
}else {
PrimeFaces.widget.VerticalTree.prototype.nodeClick.call(this, b, a);
}
};
}
function doSelection(){
PrimeFaces.widget.VerticalTree.prototype.nodeClick.call(param0, param1, param2);
}
我使用了 JQuery UI 确认对话框。如果用户单击 "Continue",我会使用 savad 参数进行选择,否则我会关闭对话框。
$( function() {
$( "#dialog-confirm" ).dialog({
autoOpen: false,
resizable: false,
height: "auto",
width: 400,
modal: true,
buttons: {
"Continue": function() {
$( this ).dialog( "close" );
doSelection();
},
Cancel: function() {
$( this ).dialog( "close" );
}
}
});
} );
有点棘手,但似乎工作得很好。
如果某个条件为真,是否有办法在 primefaces p:tree
中取消节点的 select 事件?
我想显示一个对话框,如果用户选择 "cancel" 选项,则不应更改 selection。 我尝试从 p:ajax 调用 javascript 函数,但新节点无论如何都是 selected。
<p:ajax event="select" onstart="showDialog()"/>
我必须覆盖 Primefaces 树的默认行为吗?
PF6.2
如果您想取消请求,您需要在 onstart
中明确 return 一个 false
。
onstart="return false;"
将取消请求。这意味着您需要 return 来自 showDialog AND 的 true 或 false return 显式 return 该值在开始时。所以
onstart="return showDialog();"
您接下来的挑战是如何 'delay' 此 javascript 函数的 return 以便您可以提供用户操作的 return 值。
我终于想出了另一个解决方案:我已经覆盖了 'nodeClick' Primefaces VerticalTree 小部件,这样我就可以选择显示对话框或继续选择。
举个例子:
var param0, param1,param2;
function init() {
PF('treeWidgetVar').nodeClick = function (b, a) {
param0 = this;
param1 = b;
param2 = a;
if(checkSomeCondition() == 'true'){
showMyDialog();
return;
}else {
PrimeFaces.widget.VerticalTree.prototype.nodeClick.call(this, b, a);
}
};
}
function doSelection(){
PrimeFaces.widget.VerticalTree.prototype.nodeClick.call(param0, param1, param2);
}
我使用了 JQuery UI 确认对话框。如果用户单击 "Continue",我会使用 savad 参数进行选择,否则我会关闭对话框。
$( function() {
$( "#dialog-confirm" ).dialog({
autoOpen: false,
resizable: false,
height: "auto",
width: 400,
modal: true,
buttons: {
"Continue": function() {
$( this ).dialog( "close" );
doSelection();
},
Cancel: function() {
$( this ).dialog( "close" );
}
}
});
} );
有点棘手,但似乎工作得很好。