3

SpringMVCアプリケーションの@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のエラーが発生した場合はどうなりますか?

4

1 に答える 1

4

最後に、機能エラーを処理するカスタム例外を作成しました。

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());
}

これが私が見つけた最良の方法です。より良い提案があれば、私はすべて耳にします!

于 2012-12-08T04:23:24.107 に答える