我正在使用primefaces 3.3.1和JSF 2(Mojarra 2.1.9)。動態創建PrimeFaces對話框
我有一個包含DataTable組件和Dialog的頁面來顯示DataTable條目的詳細信息。當我有一個對話框時,這非常簡單。我想要的是試圖讓用戶在同一時間打開兩個或三個不同條目的細節。有人知道如何從服務器獲得與AJAX的完整對話,而不僅僅是對話內容嗎?
我正在使用primefaces 3.3.1和JSF 2(Mojarra 2.1.9)。動態創建PrimeFaces對話框
我有一個包含DataTable組件和Dialog的頁面來顯示DataTable條目的詳細信息。當我有一個對話框時,這非常簡單。我想要的是試圖讓用戶在同一時間打開兩個或三個不同條目的細節。有人知道如何從服務器獲得與AJAX的完整對話,而不僅僅是對話內容嗎?
是的,我做到了。爲此,我在後臺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");
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>
@newuserua您的代碼不工作widgetVar值設置好的只有一次在頁面加載
...
requestContext.update("panel_id");
上述行更新完全面板的清爽所有現有的對話框及其內容。
重複http://stackoverflow.com/questions/8682277/how-to-programmatically-add-dialogs-with-primefaces – rags
我已經看到了這個問題,但我的問題稍有不同。主要區別在於我想讓用戶同時打開更多對話框,所以我無法在頁面上對對話框進行硬編碼。唯一的可能性是對於表中的每個條目都有一個對話框,這是因爲網絡開銷而不好,並且也不可能用於懶加載表。 – partlov
您是否找到解決方案? – atamanroman