有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Primefaces以编程方式将对话框打开为对话框

我可以在primefaces中以编程方式打开一个对话框,如下所示:

Primefaces open closable dialog programmatically

我也可以在我的对话框中打开另一个对话框!但是当我想用这个代码关闭它时,它不会关闭

RequestContext.getCurrentInstance().closeDialog(null);

我不能点击任何东西

只有当我打开两个对话框时才会发生这种情况

索引。xhtml

<p:commandButton value="Open First Dialog" process="@form" update="@form" actionListener="#{mybean.openFirstDialog}"/>

mybean。java

@Component
@Scope("session")
public class MyBean{

 public void openFirstDialog() {
        RequestContext requestContext = RequestContext.getCurrentInstance();

        Map<String, Object> options = new HashMap<>();

        options.put("modal", true);
        options.put("width", "850");
        options.put("contentWidth", "520");
        options.put("closable", false);
        options.put("resizable", false);

        requestContext.openDialog("/page/firstdialog", options, null);
    }

}

firstdialog。xhtml

<p:commandButton value="Open Second Dialog" process="@form" update="@form" actionListener="#{firstDialogBean.openSecondDialog}"/>

FirstDialogBean。java

@Component
@Scope("view")
public class FirstDialogBean{

public void openSecondDialog() {
        RequestContext requestContext = RequestContext.getCurrentInstance();

        Map<String, Object> options = new HashMap<>();

        options.put("modal", true);
        options.put("width", "850");
        options.put("contentWidth", "520");
        options.put("closable", false);
        options.put("resizable", false);

        requestContext.openDialog("/page/seconddialog", options, null);
    }

}

第二个对话框。xhtml

<p:commandButton value="Close Second Dialog" process="@form" update="@form" actionListener="#{secondDialogBean.close}"/>

secondDialogBean。java

@Component
@Scope("view")
public class SecondDialogBean{
public void close() {
        RequestContext.getCurrentInstance().closeDialog(null);
    }
}

实际上,我在关闭对话框时不会传递NULL!我会做一些事情,传递一个物体!但我不能在这里写完整的代码 然后,当我关闭第二个对话框时,我可以在第一个对话框中得到那个对象,然后再做一些事情

我希望我能说出我的意思

点击“关闭第二个对话框”后,它卡住了! 我也试过了,但没用:

RequestContext.getCurrentInstance().closeDialog("/page/seconddialog");

共 (1) 个答案

  1. # 1 楼答案

    你需要说出你关闭的对话框的名称

    RequestContext.getCurrentInstance().openDialog("titleEdit", options,
                    null);
    
    RequestContext.getCurrentInstance().closeDialog("titleEdit");
    

    有关同时打开两个对话框以及如何关闭它们的信息,请参见this example