如何在primefaces中等待输入对话框

如何在primefaces中等待输入对话框,primefaces,Primefaces,我对显示一个输入对话框感兴趣,一旦用户在对话框中输入了节点的名称,我想用他们输入的名称创建一个树节点 我正在创建编辑对话框,然后在同一个函数中添加节点,但我看到的行为是,树节点出现在对话框出现之前,或者在用户有机会提交节点名称之前,这意味着显示对话框后包含的其余代码不会等待对话框返回输入 是否有一种方法可以提供一个输入对话框并在执行另一个操作之前等待完成 下面是我的代码-add()方法调用editKey()方法,然后添加节点 在add函数中的其余代码继续之前,我希望能够等待每个键的输入并生成标记

我对显示一个输入对话框感兴趣,一旦用户在对话框中输入了节点的名称,我想用他们输入的名称创建一个树节点

我正在创建编辑对话框,然后在同一个函数中添加节点,但我看到的行为是,树节点出现在对话框出现之前,或者在用户有机会提交节点名称之前,这意味着显示对话框后包含的其余代码不会等待对话框返回输入

是否有一种方法可以提供一个输入对话框并在执行另一个操作之前等待完成

下面是我的代码-add()方法调用editKey()方法,然后添加节点

在add函数中的其余代码继续之前,我希望能够等待每个键的输入并生成标记名,但情况似乎并非如此:

public void add(){
    log.debug("node=<" + node.getValue() + ">");
    Node saveNode = node;
    if (node.getInfo().isList() || 
        node.getInfo().isLeafList()){
        try{
            TreeHelper treeHelper = (TreeHelper)device.getTreeHelper();
            Node n = treeHelper.getSchemaNode(node, node.getTagPath());
            if (n != null){
                if (node.getInfo().isList()){
                    log.debug("node<" + node.getName() + " is a list!");
                    String tagName = "";
                    if (n.getKeys().size() > 0){
                        for(String key: n.getKeys()){
                          node = n.getChildren().get(key); 
                          if (node != null){
                              editKey(node);
                          }
                          if (tagName.equals("")){
                            tagName += node.getValue();
                          }else{
                              tagName += "-" + node.getValue();
                          }
                        }
                    }
                    n.setTag(tagName);
                    n.getInfo().setListEntry(true);
                    n.getNodeTypes().remove("List");
                    n.getNodeTypes().add("ListEntry");
                    node = saveNode;
                }else if (node.getInfo().isLeafList()){
                    log.debug("node <" + node.getName() + "> is a leaf list!");
                    n.getInfo().setLeafListEntry(true);
                    n.getNodeTypes().remove("LeafList");
                    n.getNodeTypes().add("LeafListEntry");
                }
                addTreeNode(this.device,
                        selectedNode,
                        n,
                        true,
                        true);
            }else{
                log.debug("schema node is null for node <" + node.getName() + ">");
            }

       }catch(Exception e){
            log.error(IO.stackTrace(e));
       }
       selectedNode.setExpanded(true); 
    }
    RequestContext.getCurrentInstance().update("treeForm:treeSingle");
}

嗨,我开始怀疑我是否被列入了这个网站的黑名单或者其他什么…:)最近,我的问题没有得到任何回应。你没有被列入黑名单(当然不存在)。您的代码太长了,您确定需要全部代码吗?另外,显示JSF页面的相关部分。
public void editKey(Node node) throws Exception{
    FacesContext ctx = FacesContext.getCurrentInstance();

    UIViewRoot rootView = ctx.getViewRoot();
    Dialog dialog = (Dialog)rootView.findComponent("editDialog");

    dialog.setVisible(true);
    dialog.setModal(true);

    dialog.getChildren().clear();

    UIForm form = new UIForm();
    form.getChildren().clear();

    PanelGrid panel = new PanelGrid();
    panel.setColumns(2);

    OutputLabel label = new OutputLabel();
    label.setValue(node.getName());
    label.setFor("valueId");
    panel.getChildren().add(label);

    if (node.getDataTypes().contains("BOOL") ||
        (node.getValue() != null && 
        (node.getValue().equals("false") || node.getValue().equals("true")))){
        SelectOneMenu menu = new SelectOneMenu();
        ValueExpression valueExpression = createValueExpression("#{treeBean.node.value}");
        menu.setValueExpression("value", valueExpression);
        menu.setId("valueId");
        menu.setLabel(node.getName());
        if (node.getValue() != null &&
            node.getValue().equals("false")){
            UISelectItem item = new UISelectItem();
            item.setItemLabel("false");
            item.setItemValue("false");
            menu.getChildren().add(item);
            item = new UISelectItem();
            item.setItemLabel("true");
            item.setItemValue("true");
            menu.getChildren().add(item);
        }else{
            UISelectItem item = new UISelectItem();
            item.setItemLabel("true");
            item.setItemValue("true");
            menu.getChildren().add(item);                
            item = new UISelectItem();
            item.setItemLabel("false");
            item.setItemValue("false");
            menu.getChildren().add(item);
        }
        panel.getChildren().add(menu);
    }else if (node.getEnums().size() > 0){
        SelectOneMenu menu = new SelectOneMenu();
        ValueExpression valueExpression = createValueExpression("#{treeBean.node.value}");
        menu.setValueExpression("value", valueExpression);
        menu.setId("valueId");
        menu.setLabel(node.getName());
        for(String s : node.getEnums()){
            int index = s.indexOf(":");
            if (index != -1){
                s = s.substring(0, index);
            }
            UISelectItem item = new UISelectItem();
            item.setItemLabel(s);
            item.setItemValue(s);
            menu.getChildren().add(item);
        }
        panel.getChildren().add(menu);
    }else{
        InputText inputText = new InputText();
        ValueExpression valueExpression = createValueExpression("#{treeBean.node.value}");
        inputText.setValueExpression("value", valueExpression);
        inputText.setId("valueId");
        inputText.setLabel(node.getName());
        inputText.setType("text");
        panel.getChildren().add(inputText);
    }
    UIOutput output = new UIOutput();
    output.setValue("Data types:  ");
    panel.getChildren().add(output);
    output = new UIOutput();
    output.setValue(node.getDataTypes().toString().replace("]", "").replace("[", ""));
    panel.getChildren().add(output);

    output = new UIOutput();
    output.setValue("Min. occurs:  ");
    panel.getChildren().add(output);
    output = new UIOutput();
    output.setValue(node.getMinOccurs()+"");
    panel.getChildren().add(output);

    output = new UIOutput();
    output.setValue("Max. occurs:  ");
    panel.getChildren().add(output);
    output = new UIOutput();
    output.setValue(node.getMaxOccurs()+"");
    panel.getChildren().add(output);


    form.getChildren().add(panel);


    CommandButton button = new CommandButton();
    button.setOnclick("$('#progress').show();$('#editDialog').hide();");
    button.setOncomplete("$('#progress').hide();$('#editDialog').hide();");
    button.setValue("submit");
    MethodExpression me = createMethodExpression("#{treeBean.save}");
    button.setActionExpression(me);

    form.getChildren().add(button);

    dialog.getChildren().add(form);

    RequestContext.getCurrentInstance().update("editDialog");
    RequestContext.getCurrentInstance().execute("editWidget.show()");


}