2013-10-23 135 views
0

我正在使用播放2.2.0 我有一个Global对象设置用onError和onHandlerNotFound覆盖方法定义。从视图我做了Ajax调用,由于sql语法问题引发500内部服务器,但我无法看到我已经在onError方法中设置的500内部页面,但如果找不到处理程序,我可以看到NotFound页面。是否因为我正在使用ajax请求而有所期望?500错误页面不显示

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

如果这是一个ajax请求,那么问题是你在哪里做ajax调用,你对结果做了什么?换句话说,您是否也可以发布提出此请求的前端代码? – Ashalynd

回答

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; 
    } 
}); 
0

这是Play的一项功能! 2.2。我与Play有同样的问题! 2.2.1,Java API并使用来自命令行的curl。只是onHandlerNotFound按照指定的方式工作,但onError只是让HTTP连接挂起而不会返回响应。

降级到2.1.5可以解决问题。