2011-08-16 110 views
1

它遲到而且很累,但這個問題讓我瘋狂。Struts2驗證 - 在驗證失敗時重新填充兒童

我有一個表格。此表單有一些映射到實體的輸入字段,並在提交時保留。 在同一頁面上(但不是表格的一部分),我對該實體的子項進行了概述。

struts2-Action有一個名爲edit()的方法,它將在窗體顯示之前運行。該方法使用提供的id參數並從數據庫中檢索完整的實體(包括孩子)。 因此,表單很好地與兒童信息一起顯示。

但是,驗證(服務器側)出現錯誤時。實體對象不再有孩子。所有的信息(除了表單本身的內容)似乎都消失了。

即使驗證失敗後,我應該怎麼做才能看到我的孩子?

回答

1

這晚,我已經厭倦了太多,但我的頭頂部:

我可能會使用AJAX避免了這個問題(也就是使動作分成較小的部分,因爲一個服務似乎是與另一個無關,即顯示孩子不需要與更新實體綁定)。

但是這是很多工作,尤其是如果你不使用ajax的話。真正容易的是實現Validateable(或者如果你擴展ActionSupport它已經這樣做),然後添加/覆蓋validate方法。如果你使用xml進行驗證,不用擔心兩者都運行。

然後創建一個設置方法來填充所需的字段,並將其放置在validate方法(可能是第一行)的正確位置。由於這將始終在執行前運行,它可能會減小執行方法的大小。

+0

完美。不知道Validateable,但那正是我需要的。 – user829237