我正在使用 primefaces 3.3.1 和 JSF 2 (Mojarra 2.1.9)。
我有一个带有 DataTable 组件和 Dialog 的页面来显示 DataTable 条目的详细信息。当我有一个对话框时,这非常简单。我想要的是尝试允许用户同时打开两个或三个带有不同条目详细信息的 dailog。有人知道如何从服务器获取与 AJAX 的整个对话,而不仅仅是对话内容吗?
我正在使用 primefaces 3.3.1 和 JSF 2 (Mojarra 2.1.9)。
我有一个带有 DataTable 组件和 Dialog 的页面来显示 DataTable 条目的详细信息。当我有一个对话框时,这非常简单。我想要的是尝试允许用户同时打开两个或三个带有不同条目详细信息的 dailog。有人知道如何从服务器获取与 AJAX 的整个对话,而不仅仅是对话内容吗?
是的,我做到了。为此,我在 backing 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");
对话 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>
@newuserua 您的代码不起作用 widgetVar 值仅在页面加载时设置一次
...
requestContext.update("panel_id");
上面的行更新了完整的面板,它刷新了所有现有的对话框及其内容。