2012-10-08 74 views
0

我有兩個Primefaces p:dialogs在我的網頁,我有兩個按鈕來顯示他們(一個是刪除按鈕,另外一個是編輯按鈕)。JSF - 有條件地顯示兩個中的一個對話框

我設置對話框的可見屬性如下:visible="#{fn:length(bean.selectedItems) gt 0}爲刪除按鈕和visible="#{fn:length(bean.selectedItems) eq 1},所以我可以刪除多個元素,但只能同時編輯一個。

現在這個bean是ViewScoped,所以如果只有一個項目被選中,並且有一個沒有按下Ajax提交的commandButton,那麼這兩個對話框都會顯示出來,這顯然不是我想要的。

有什麼需要時,只顯示相應的對話框最簡單的方法?

我不想設定一個額外的屬性豆,因此我們認爲這是一個平凡的解決方案。有另一種方法嗎?也許將動作的名稱設置爲視圖作用域參數?或者使用呈現的屬性並管理從javascript回調中顯示/隱藏?

回答

1

我認爲正確的方法是

<p:commandButton value="DELETE" 
       onclick="deleteDialog.show()" 
       disabled="#{fn:length(bean.selectedItems) eq 0}" /> 

<p:commandButton value="EDIT" 
       onclick="editDialog.show()" 
       disabled="#{fn:length(bean.selectedItems) ne 1}" /> 
+0

我最終實現與此非常相似。 –

相關問題