簡體   English   中英

Spring MVC,處理@service層中的錯誤並將其發送到jsp

[英]Spring MVC, handle errors in @service layer and send them to the jsp

我尋求在Spring MVC應用程序的@service層中處理錯誤驗證的最佳方法。

我有一個@Controller和一個@Service類。

我的控制器:

public String saveProduct(Product product) {
    myService.saveProduct(product);
    return "view";
}

我的服務:

public void saveProduct(Product product) {
    // some validation here
    myDao.save(product);
}

現在,假設驗證導致2或3個錯誤(顏色不合適,供應商現在無法交付產品,依此類推...),我必須同時顯示所有這些錯誤。

我該如何將這些錯誤傳遞給控制器​​,然后傳遞給jsp? 使用“錯誤”對象? 包含所有這些錯誤的異常嗎?

我已經看過這里了:將錯誤從服務層傳遞回視圖,但找不到合適的答案。 我真的必須為每個錯誤創建未經檢查的異常嗎? 如果我有20或30個錯誤該怎么辦?

最后,我創建了一個自定義異常來處理功能錯誤:

public class ServiceException extends Exception {  
    private List<String> errors = new ArrayList<>();
    (...)
}

我還使用以下方法創建了ValidationErrorsHelper類:

public static void rejectErrors(final BindingResult result, final List<String> errors) {
    if (errors != null) {
        for (final String error : errors) {
            result.reject(error);
        }
    }
}

在控制器類中,我捕獲到異常:

try {
    this.myService.myFunction(...);
} catch (final ServiceException e) {
    ValidationErrorsHelper.rejectErrors(result, e.getErrors());
}

這是我能找到的最好方法。 如果有更好的建議,我會全力以赴!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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