【发布时间】:2015-09-01 00:16:51
【问题描述】:
我正在使用 angularjs 和 Spring Mcv Rest 开发一个单页应用程序。
我在 Angularjs 中调用我的服务(使用 javax 邮件发送邮件):SendProformaFax.get({idCommande:$scope.commande.id})
在服务器端我的服务:
@RequestMapping(value = "/sendProformaFax/{idCommande}",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public void imprimeProforma(@PathVariable String idCommande) {
Commande commande = commandeRepository.findOne(new Long(idCommande));
List<Vente> ventes = venteRepository.findAllByCommande(commande);
blService.sendProformaFax(ventes);
}
我想在函数 sendProformaFax 抛出 MessagingException 时显示一条消息。
我不知道如何在我的 RestController 中返回这个异常以及如何在 Angularjs 中捕获它。
如果有人可以帮助我...
谢谢。
编辑: 在服务器端,我正在这样做:
@ExceptionHandler(value = Exception.class)
public ErrorView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
// If the exception is annotated with @ResponseStatus rethrow it and let
// the framework handle it - like the OrderNotFoundException example
// at the start of this post.
// AnnotationUtils is a Spring Framework utility class.
if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null)
throw e;
// Otherwise setup and send the user to a default error-view.
ErrorView mav = new ErrorView();
mav.setException(e.getMessage());
mav.setUrl(req.getRequestURL().toString());
mav.setMessage("Veuillez contacter le support informatique.");
return mav;
}
在 Angularjs 方面我正在这样做
CreateFichierCiel.get({params:param}, function (response) {
$scope.infoMessage = "La génération du fichier CIEL est terminée."
$activityIndicator.stopAnimating();
$("#messageModal").modal('show');
$scope.find();
}, function (reason) {
$("#errorModal").modal('show');
})
但“原因”对象是这样的:
配置:对象数据:对象错误:“内部服务器错误”异常: “java.lang.NullPointerException”消息:“无可用消息”路径: “/api/createFichierCiel/15-00005”状态:500 时间戳:1438430232307 原型:对象头:函数(名称){状态:500 statusText: “内部服务器错误”原型:对象
所以我没有收到服务器发送的 ErrorView 类。 如果有人能在这里看到我错在哪里......
谢谢
【问题讨论】:
-
您使用的是哪个版本的 Spring?
-
0.8.8
标签: java angularjs spring spring-mvc exception-handling