Primefaces 树:取消选择事件
如果某个条件为真,是否有方法取消primefacesPrimefaces 树:取消选择事件,primefaces,Primefaces,如果某个条件为真,是否有方法取消primefacesp:tree中节点的选择事件 我想显示一个对话框,如果用户选择“取消”选项,则不应更改选择。 我曾尝试从p:ajax调用javascript函数,但还是选择了新节点 <p:ajax event="select" onstart="showDialog()"/> 我必须重写Primefaces树的默认行为 PF6.2如果要取消请求,需要在onstart中显式返回false onstart="return false;" 将取
p:tree
中节点的选择事件
我想显示一个对话框,如果用户选择“取消”选项,则不应更改选择。
我曾尝试从p:ajax调用javascript函数,但还是选择了新节点
<p:ajax event="select" onstart="showDialog()"/>
我必须重写Primefaces树的默认行为
PF6.2如果要取消请求,需要在
onstart
中显式返回false
onstart="return false;"
将取消请求。这意味着您需要从showDialog返回true或false,并在onstart中显式返回该值。所以
onstart="return showDialog();"
然后,您的挑战是如何“延迟”此javascript函数的返回,以便提供用户操作的返回值 我终于想出了另一个解决方案:我已经覆盖了Primefaces VerticalTree小部件的“nodeClick”,这样我可以选择显示对话框或继续选择 这里有一个例子:
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);
}
我使用了jqueryui确认对话框。如果用户单击“继续”,我将使用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" );
}
}
});
} );
有点棘手,但似乎工作得很好。Dit您是否尝试
onstart=“return false;”
?那么它被取消了吗?您很可能还希望,如果使用取消了操作,那么值是“重置”吗?否则,用户看到的内容与模型包含的内容不一致。对吧?啊。。。正确的。使用onstart=“return false;”取消选择。对于重置值,我可以只更新组件。谢谢!嗯,如果我们能在服务器选择事件发生之前取消它,那就太酷了。。。???这不就是返回false在Javascript中所做的吗?我等不及用户输入了。因此,我认为更简单的解决方案是onstart=“showDialog();return false;”,而不是从对话框的ok/cancel按钮执行所需的javascript(选择或执行其他操作)。。。您可以在javascript中执行超时,如果您使对话框成为模态,则用户必须执行某些操作。因此,如果用户没有执行任何操作,请执行新的100毫秒超时。。。可能有用…甚至可能在p:ajax
\works中添加p:confirmDialog
?它只是可能…也许我会看看我是否能找到一个通用的PrimeFaces补丁,让confirmDialog以这种方式工作。不幸的是,我注意到,如果have onstart=“return false”新节点被高亮显示,有没有办法阻止它?