0

我正在使用 play 2.2.0 我有一个全局对象设置,其中定义了方法 onError 和 onHandlerNotFound 被覆盖。从视图来看,由于 sql 语法问题,我正在进行 ajax 调用,该调用会引发 500 个内部服务器,但我无法看到我在 onError 方法中设置的 500 个内部页面,但如果找不到处理程序,我可以看到 NotFound 页面。这是预期的事情,因为我正在使用 ajax 请求。

object Global extends WithFilters(LogFilter) with GlobalSettings {
    override def onError(request: RequestHeader, ex: Throwable) = {
        Future.successful(InternalServerError(
            views.html.error(ex)
        ))
    }  
  ...
}
4

2 回答 2

0

我想这是意料之中的,因为你的两个 ajax 请求很可能是不同的(正如 Ashalynd 提到的,发布你的前端代码)。ajax 请求在哪里捕获响应并相应地重定向。例如使用 jQuery:

$.ajax({
   url: "http://wherever.com",
   type: 'GET',
   success: function(msg) {
      // Do successful things
   },
   error: function (xhr, ajaxOptions, thrownError) {
      // Redirect
      window.location.href = "/errorpage.html";
      // Or some weird form of "redirect" (don't use this, just 
      // for demonstration purpose, showing how you can capture
      // whatever you sent along with your error)
      var responseText = $.httpData(xhr);
      document.body.innerHtml = responseText;
   }
});
于 2013-10-24T21:02:14.797 回答
0

这是 Play 的一个功能!2.2. 我玩玩也有同样的问题!2.2.1,Java API 和从命令行使用 curl。只是 onHandlerNotFound 按规定工作,但 onError 只是让 HTTP 连接挂起,从不返回响应。

降级到 2.1.5 解决了这个问题。

于 2013-11-28T15:11:14.650 回答