动态创建PrimeFaces对话框

时间:2012-06-22 08:35:32

标签: ajax jsf-2 dialog primefaces

我正在使用primefaces 3.3.1和JSF 2(Mojarra 2.1.9)。

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

3 个答案:

答案 0 :(得分:6)

是的,我做到了。为此,我在支持bean中以编程方式创建了必要的对话框。我知道这不是最好的做法,但在这一刻我认为这只是可能的解决方案。首先,我在JSF页面上添加了一个组面板,它是容器,用于对话框。然后在支持bean上我有一些像这样的代码:

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");

答案 1 :(得分:3)

Dialog 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>

答案 2 :(得分:0)

@newuserua您的代码无法运行widgetVar值仅在页面加载时设置一次

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

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