【发布时间】:2012-09-10 04:12:26
【问题描述】:
我寻求在 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?使用“错误”对象?包含所有这些错误的异常?
我已经看过这里:Passing errors back to the view from the service layer 但我找不到方便的答案。我真的必须为每个错误创建未经检查的异常吗?如果我有 20 或 30 个错误怎么办?
【问题讨论】:
-
我会选择例外——这就是它们的用途。只需使用一些通用异常类并传入消息,即可在 JSP 中显示。无论您使用哪种方法,都需要对消息进行编码。
-
如果我有 3 条错误消息要同时显示怎么办?我必须抛出一个包含 3 条消息的异常吗?
-
有什么理由不使用 JSR 303 或 Spring Bean 验证?例如。 stackoverflow.com/questions/6835122/…
-
我已经在我的控制器中使用了两者(用于表单验证,如姓名长度、电子邮件格式......)。但在服务中,我必须进行额外的控制,比如供应商可用性和其他东西)。我在问题描述中给出的链接反映了我目前的情况……但我主要关心的是如何同时显示多条消息。
标签: java validation spring-mvc service multi-layer