Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 动态创建PrimeFaces对话框_Ajax_Jsf 2_Dialog_Primefaces - Fatal编程技术网

Ajax 动态创建PrimeFaces对话框

Ajax 动态创建PrimeFaces对话框,ajax,jsf-2,dialog,primefaces,Ajax,Jsf 2,Dialog,Primefaces,我使用的是PrimeFaces3.3.1和JSF2(Mojarra 2.1.9) 我有一个带有DataTable组件的页面和显示DataTable条目详细信息的对话框。当我有一个对话框时,这很简单。我想要的是允许用户同时打开两个或三个dailog,其中包含不同条目的详细信息。有人知道如何使用AJAX从服务器获取整个对话框,而不仅仅是一个对话框内容吗?对话框id也可以是动态的,所以您可以创建一些id或其他值,并将其提供给他 <p:dialog header="Choose Delimiter

我使用的是PrimeFaces3.3.1和JSF2(Mojarra 2.1.9)


我有一个带有DataTable组件的页面和显示DataTable条目详细信息的对话框。当我有一个对话框时,这很简单。我想要的是允许用户同时打开两个或三个dailog,其中包含不同条目的详细信息。有人知道如何使用AJAX从服务器获取整个对话框,而不仅仅是一个对话框内容吗?

对话框id也可以是动态的,所以您可以创建一些id或其他值,并将其提供给他

<p:dialog header="Choose Delimiter Type" id="dialog"
    widgetVar="exportDialog#{p.Id}" resizable="false" >

通过按钮进行呼叫

<p:commandButton id="id" value="xxx"
            actionListener="#{p.export2CSV}" ajax="false"
            onclick="exportDialog#{p.tabId}.show()">                
        </p:commandButton>

是的,我做了。为此,我在backingbean中以编程方式创建了必要的对话框。我知道这不是最好的做法,但现在我认为这是唯一可能的解决办法。首先,我添加了一个组面板,它是JSF页面上对话框的容器。然后在backingbean上,我有如下代码:

UIComponent panelGroup = facesContext.getViewRoot().findComponent("panel_id");
Dialog dialog = new Dialog();
dialog.setHeader("Sample");
dialog.setVisible(true);
dialog.setMinimizable(true);
...
panelGroup.getChildren().add(dialog);
...
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.update("panel_id");

@newuserua您的代码不工作widgetVar值在页面加载时仅设置一次

...
requestContext.update("panel_id");

上面的一行更新了整个面板,刷新了所有现有的对话框及其内容。

重复的我已经看到了这个问题,但我的问题略有不同。主要的区别是我想允许用户同时打开更多的对话框,所以我不能硬编码页面上的对话框。唯一的可能性是,对于表中的每个条目都有一个对话框,这是不好的,因为网络开销,对于延迟加载的表也是不可能的。您找到解决方案了吗?