簡體   English   中英

在Tapestry Web應用程序中處理域異常的最佳方法是什么?

[英]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對象,我可以想到兩種基本方法:

  1. 使用@Validate注釋進行Tapestry字段驗證

    在這種情況下,如果我們可以通過正則表達式過濾和檢查輸入,或者通過限制值或執行@Validate提供的類似操作,我們將在我們正在編輯的字段旁邊收到一條漂亮的錯誤消息,提交將失敗,從而使用戶考慮他在那里寫的內容以及如何解決它。

  2. 捕獲域異常並基於它執行操作

    我假設這種情況提供了更多關於可以做什么和不可以做什么的選擇。 例如,如果使用者需要輸入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.

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