2013-05-20 24 views
0

我有一個p:對話框,其中動態設置爲true。在命令按鈕中,我打電話給它顯示這樣的<p:commandButton ajax="true" actionListener="#{bean.setCurrentElement(element)}" oncomplete="myDialog.show" update=":myForm:myDialogId"/>。在對話框裏面,我有一個<p:selectOneMenu value="#{bean.currentElement.someId}「`primefaces與oneselectmenu的動態對話框

當我點擊命令按鈕,代碼炸燬,因爲之前的動作監聽器是完全有通過使其空的bean.currentElement進行訪問。當我使用<h:outputText>,對話框顯示正常。我的對話被定義爲<p:dialog header="Bla" widgetVar="myDialog" modal="true" id="myDialogId" dynamic="true">

的bean是viewScoped。爲什麼對話框的動作監聽器方法之前作出的任何想法被稱爲?

+0

Bean是viewscoped。 –

+0

我認爲你是對的,但我得到這個異常javax.faces.component.UpdateModelException:javax.el.PropertyNotFoundException:/pages/dialog/myDialog.xhtml @ 58,73 value =「#{bean.currentElement.someId}」:目標無法訪問,'null'返回null –

+0

我不認爲我可以提供SSCSE,因爲它相當複雜,而且有人正在嘗試編寫代碼。有什麼我可以做,以確定是什麼原因導致它爲每個請求重建。 –

回答

0

我很遺憾沒來得及弄清楚是什麼如果可以調用的話,我所做的只是一個破解,我在視圖初始化期間創建了這個類,虛擬對象確保get沒有炸燬,動作監聽器將它設置爲適當的對象,然後再次被觸發以獲得正確的值。

我會嘗試檢查並查看爲什麼會發生這種情況併發布我的結果。