[英]the best “place” to invoke business logic in a Tapestry page?
[Tapestry版本:5.4-rc-1]
在掛毯頁面中放置/調用業務邏輯的最佳“位置”是什么? 我可以看到很多使用onValidate()
方法的示例(在驗證結束時表單觸發的validate事件)。 目前,我這樣做:
onValidate()
方法內部:我驗證收到的數據並使用“表單上下文”執行/調用不同的業務邏輯 onSuccess()
或onFailure()
:我只是考慮渲染區域/加載一些javascript函數/准備消息以可視化 我不太喜歡將業務邏輯與驗證“混合”,我想知道是否有人會建議一種不同/更好的方法-我看到的唯一選擇是將所有內容移到onSuccess()
並在那里處理最終的異常。
我認為確定您所指的“業務邏輯”是有意義的。 您是否正在使用服務來驗證某些內容,顯而易見的地方是onValidate()
。 我們使用的驗證業務邏輯的一個示例是通過執行DNS MX記錄檢查來確保電子郵件的域確實存在。 或檢查用戶名是否已經存在。
我們總是將任何CRUD服務調用放在onSuccess()
方法中,然后准備結果視圖並返回它。
我們只使用onFailure()
來准備視圖,以防onValidate()
(在窗體級別或單個字段級別)拋出某種ValidationException 。 在我們的例子中, onFailure()
永遠不會調用任何業務邏輯。
如果確實有多個提交按鈕,請使用一個本地變量存儲調用了哪個按鈕,以便您隨后的onValidate()
, onSuccess()
和onFailure()
知道對它們的要求是我們同樣使用的技巧。
在您的問題中,我們經常使用一種缺少的方法onPrepare(Context formContext)
來使用傳入的上下文來設置表單處理。 這對於確保您不會在HttpSession
和/或在循環中使用表單時不粘貼變量非常有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.