【问题标题】:500 error page doesn't show up500 错误页面不显示
【发布时间】:2013-10-23 14:35:21
【问题描述】:

我正在使用 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)
        ))
    }  
  ...
}

【问题讨论】:

  • 如果这是一个 ajax 请求,那么问题是你在哪里进行 ajax 调用以及你如何处理结果?换句话说,您能否也发布发出此请求的前端代码?

标签: scala playframework playframework-2.2


【解决方案1】:

我想这是意料之中的,因为您的两个 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;
   }
});

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      相关资源
      最近更新 更多