500错误页面未显示

时间:2013-10-23 14:35:22

标签: scala playframework playframework-2.2

我正在使用play 2.2.0 我有一个全局对象设置定义方法onError和onHandlerNotFound重写。从视图我发出ajax调用,由于sql语法问题抛出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)
        ))
    }  
  ...
}

2 个答案:

答案 0 :(得分: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;
   }
});

答案 1 :(得分:0)

这是Play的一个特色! 2.2。我和Play有同样的问题! 2.2.1,Java API并从命令行使用curl。只是onHandlerNotFound按照指定的方式工作,但onError只是让HTTP连接挂起而永远不会返回响应。

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