当前位置: 首页 > 知识库问答 >
问题:

p: 树:取消选择事件

袁增
2023-03-14

如果某个条件为真,是否有方法取消primefaces树中节点的选择事件?

我想显示一个对话框,如果用户选择“取消”选项,则不应更改选择。我曾尝试从p:ajax调用javascript函数,但还是选择了新节点。

<p:ajax event="select" onstart="showDialog()"/>

我必须重写Primefaces树的默认行为?

PF6.2

共有2个答案

丌官盛
2023-03-14

我终于想出了另一个解决方案:我重写了Primeface 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);
}

我使用了JQuery UI确认对话框。如果用户单击“继续”,我会使用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" );
                }
            }
        });
    } );

有点棘手,但似乎效果很好。

农波涛
2023-03-14

如果要取消请求,您需要在onstart中显式返回false

onstart="return false;"

将取消请求。这意味着您需要从showDialog返回true或false,并在onstart中显式返回该值。所以

onstart="return showDialog();"

然后,您的挑战是如何“延迟”此javascript函数的返回,以便提供用户操作的返回值。

 类似资料:
  • 我想在我的应用程序中创建动态树结构。我的要求是当用户选择任何树节点并单击插入时,子节点应该插入到所选父节点下方。这很正常。现在的问题是我无法取消选择当前选择的树项以更改树项。我单击视图的背景并尝试插入一个新的树项,但它仍然转到先前选择的树节点,因为它仍然突出显示为选定的树项。如何解决这个问题?

  • 问题内容: 有什么方法可以检测是否取消选择了JTextField,即是否选择了字段,但现在您选择了其他内容。我要这样做的原因是,我想在用户表单尝试提交数据之前检查用户表单中是否存在任何非法字符。如果有一些更简单的方法可以代替我尝试解决的方法,我将很乐意接受启发。 问题答案: 首先,尽管使用和,当失去焦点时会调用它,即选择了另一个组件。 但是,因为您有一个目的: 我想检查用户表单中是否存在任何非法字

  • 是否有某种方法可以检测JTextField是否被取消选中,即该字段已被选中,但现在您已经选择了其他内容。我之所以要这样做,是因为我想在用户提交数据之前检查他们表单中是否有任何非法字符。如果有更简单的方法可以做到这一点,而不是我试图解决它的方式,我会很乐意接受启示。

  • 我有一个primefaces p:treeTable,在它里面我定义了一个包含两个组件的列:span标记和h:outputText标记。当前,如果我单击其中一个元素,就会触发select event of table。但我的目的是,仅当我单击文本的某个部分(而不是span元素)时,才会触发select事件。我该怎么做?

  • 有什么方法可以检测JTextField是否被取消选择,即该字段被选择,但现在您选择了其他的东西。我之所以要这样做,是因为我想在用户尝试提交数据之前检查他们的表单是否有任何非法字符。如果有更简单的方法,而不是我试图解决它的方法,我将欣然接受启迪。

  • 希望通过Eclipse RCP应用程序的代码自动触发树selectionChanged事件。任何指针都将不胜感激。