我正在为Grails 2.3.7编写的RESTful应用程序编写自定义编组程序,该程序调用服务方法调用:
class CommentMarshaller implements MarshallerRegistrar {
@Autowired
RatingService ratingService
@Override
void register() {
JSON.registerObjectMarshaller(Comment) { Comment comment ->
def total = ratingService.getSumRating(comment)
if (!total) {
throw new IllegalStateException("to be caught")
}
return [
id: comment.id,
created: comment.created,
text: comment.text,
authorName: comment.author.username,
authorId: comment.author.id,
rating: total
]
}
}
}
我试图捕获异常,这些异常是在我的ErrorController中从marshaller抛出的:
class UrlMappings {
static mappings = {
"500"(controller: "error", action: "handleError")
}
}
当控制器代码中发生某些错误时,它可以正常工作,但是当从marshaller抛出异常时,Grails会尝试查找error.gsp并在那里渲染堆栈跟踪。 如何将错误从marshaller重定向到ErrorController?