2013-03-05 45 views
0

的時間重新評估EL表達式我有一個包含有以下的onComplete規則「保存」按鈕Primefaces對話框:的onComplete JavaScript沒有在執行

<p:dialog id="dialogId" widgetVar="dialogWidget"> 
    ... 
    <p:commandButton value="Save" async="true" 
        oncomplete="if (!args.validationFailed &amp;&amp; #{xp:hasNoMessagesToDisplay(dialogId)}) dialogWidget.hide()" 
        partialSubmit="true" process="dialog"/> 

</p:dialog> 

#{xp:hasNoMessagesToDisplay}是一個自定義EL功能檢查查看是否有任何與指定的dialogId關聯的FacesMessages。問題在於,僅當爲對話框呈現HTML時(例如,在初始頁面加載時)纔會評估此功能。我需要在完成Javascript的評估(即時)時評估函數。

是否有可能擴展Primefaces「args」Javascript對象以包含其他信息,或者有哪些替代方法?

回答

1

有一個想法從this post這給了我一個解決方案:

使用FacesContext.getCurrentInstance().validationFailed();創建的對話框用FacesMessages時表示JSF驗證失敗使

oncomplete="if (!args.validationFailed) dialogwidget.hide()"

就足夠了。我不確定這會產生什麼影響,我想我只能拭目以待....