簡體   English   中英

在掛毯頁面中調用業務邏輯的最佳“場所”?

[英]the best “place” to invoke business logic in a Tapestry page?

[Tapestry版本:5.4-rc-1]

在掛毯頁面中放置/調用業務邏輯的最佳“位置”是什么? 我可以看到很多使用onValidate()方法的示例(在驗證結束時表單觸發的validate事件)。 目前,我這樣做:

  • 在表單提交事件處理程序內部:我只是將“表單上下文”存儲在變量中(類似:“ addThis”,“ removeThat”,“ partialUpdate”,“ save”)。 這是因為我可以觸發來自不同的Submit / linksubmit組件的表單提交-可能執行不同的業務邏輯
  • 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM