[英]What is the best way to handle domain exceptions in Tapestry web application?
我在使用Tapestry創建Web GUI作為表示層時,如何處理和處理由我的域對象拋出的已檢查異常,我遇到了一些困境。
假設我有一個域對象, Foo
在其中一個方法上拋出FooException
:
public class Foo {
...
public void fooMethod throws FooException() {
...
}
...
}
現在,假設我有一個名為Bar
的Tapestry頁面,例如,使用BeanEditor
編輯Foo
對象。
現在,為了確保非法值不會傳遞給BeanEditor
來創建Foo
對象,我可以想到兩種基本方法:
使用@Validate
注釋進行Tapestry字段驗證
在這種情況下,如果我們可以通過正則表達式過濾和檢查輸入,或者通過限制值或執行@Validate
提供的類似操作,我們將在我們正在編輯的字段旁邊收到一條漂亮的錯誤消息,提交將失敗,從而使用戶考慮他在那里寫的內容以及如何解決它。
捕獲域異常並基於它執行操作
我假設這種情況提供了更多關於可以做什么和不可以做什么的選擇。 例如,如果使用者需要輸入URL
並且在執行此操作時出錯,則URL
構造函數將拋出自己的MalformedURLException
。 我們可以在Java代碼中捕獲該異常,但我的問題是,下一步該做什么以及如何做?
Tapestry是否提供了處理域異常(已檢查和/或未檢查)的任何特殊機制,除了在事情分解時彈出的異常窗口?
有沒有關於如何解決這個特定問題的模式?
您在哪里繪制常見和普通異常(如IndexOutOfBoundsException
和某些特定於域的異常(如FooException
之間的限制?
:d
最好的方法是將驗證應用於字段。 一種方法是使用@Validate。 另一個是通過添加tapestry-beanvalidator使用Bean Validation(JSR 303)注釋,這里將解釋: http ://tapestry.apache.org/bean-validation.html。
此外,在Tapestry中,所有表單字段組件在將值應用於屬性之前觸發“驗證”事件。
http://tapestry.apache.org/forms-and-validation.html解釋了這一切。 例如,假設您有一個at:id為“count”的表單字段,您可以通過聲明一個事件處理程序方法來驗證它:
void onValidateFromCount(Integer value) throws ValidationException {
if (value == 13) throw new ValidationException("Thirteen is an unlucky number.");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.