2013-10-23 142 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可以解決問題。