Страница с ошибкой 500 не открывается

Я использую play 2.2.0. У меня есть глобальные настройки объекта, определенные с переопределением методов onError и onHandlerNotFound. Из представления я делаю вызов ajax, который вызывает 500 внутренних серверов из-за проблемы с синтаксисом sql, но я не могу видеть внутреннюю страницу 500, которую я настроил в методе onError, но я могу видеть страницу NotFound, если обработчик не найден. Ожидается ли это, потому что я использую запрос ajax.

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

person pankajmi    schedule 23.10.2013    source источник
comment
Если это запрос ajax, то вопрос в том, где вы делаете вызов ajax и что вы делаете с результатами? Другими словами, не могли бы вы также опубликовать код внешнего интерфейса, который делает этот запрос?   -  person Ashalynd    schedule 24.10.2013


Ответы (2)


Я полагаю, что это ожидаемо, поскольку ваши два запроса ajax, скорее всего, различаются (как упомянул Ашалинд, опубликуйте код внешнего интерфейса). Где вы делаете свой запрос 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;
   }
});
person Dominik Bucher    schedule 24.10.2013

Это особенность Play! 2.2. У меня такая же проблема с Play! 2.2.1, Java API и использование curl из командной строки. Просто onHandlerNotFound работает как указано, но onError просто оставляет HTTP-соединение зависшим и никогда не возвращает ответ.

Понижение до 2.1.5 устраняет проблему.

person ojs    schedule 28.11.2013