2015-07-03 24 views
1

Im製作需要進行服務器端驗證的Xpages應用程序。Xpages - 如果驗證失敗,則用文檔中保存的值覆蓋空白字段

在我的表單中,當清除一個字段並提交表單 - 如果存在導致驗證失敗的另一個字段 - 則會使用文檔中上次成功保存的值重新填充。

這不是應該發生的事情。該字段應保持空白,直到頁面刷新或用戶輸入另一個值。

有沒有人有什麼想法是什麼導致這種情況發生?

感謝, 保羅

回答

0

感謝您的幫助。據我所知,這只是由於xpages包含的默認轉換器處理對象和/或字符串的方式。編寫一個Java自定義轉換器將所有東西排序

2

這取決於你的execId和refreshId。

對於部分刷新過程中發生的情況,請閱讀這些博客帖子,特別是第三部分http://www.intec.co.uk/tag/partial-refresh/

如果驗證(或轉換)服務器端失敗,則XPage的服務器端映射不會更新,因爲數據對於服務器端處理來說不夠完整。

因此,局部刷新跳轉到渲染響應,該渲染響應將HTML顯示在頁面上。這包括字段中的值 - 您正在替換HTML,因此它必須。

如果您正在保存按鈕刷新表單區域,那麼您將在那裏替換HTML,以覆蓋用戶輸入的最後一個有效值的值。

推薦的方法將取決於您的頁面架構和您正在保存的內容。一種是將驗證移動到save()函數,屆時這些值將在DominoDocument(服務器上Document的前端封裝器)中進行更新。另一種方法是僅刷新驗證區域,如果驗證成功,則調用context.reloadPage()context.redirectToPage()以有效地跳過局部刷新。

+0

感謝您的回覆保羅。目前我的保存是一個簡單的操作(保存數據源)。我已經重複使用綁定到每個數據源的面板。我的疑惑源於這樣一個事實,即如果我有多個標記爲無效的字段,那麼我將ONE更改爲有效的數字,然後在驗證失敗時,新的數字仍將保留在輸入中。但是,如果我將ONE字段更改爲空,則會被覆蓋。從你所說的話來看,這被認爲是標準的?爲什麼只有當這個領域是空白的時候纔會發生,我該如何解決這個問題? – user4372614

+0

對不起,我不確定我瞭解你的建議。如何將驗證移動到save()函數?用一個按鈕,我想我可以打開它,或者我可以關閉它(通過沒有驗證器複選框的過程)。 – user4372614

+0

我做了一些更多的實驗,並確定如果字段上有一個轉換器(我正在使用數字轉換器),則從文檔重新填充空白字段。或者,如果該字段用於字符串,則不會重新填充空白值。有任何想法嗎? – user4372614

相關問題