3

我寻求在 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 个错误怎么办?

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 回答