2015-06-11 2 views
0

У меня есть контроллер, который возвращает какой-то объект, а в плохих случаях он должен передавать сообщения об ошибках в часть ошибки в ajax. AnswerText не принимает причину tomcat возвращает мне целую страницу с тегами и полной трассировкой стека, но мне нужно всего пару слов, чтобы показать это сообщение пользователю.пользовательское сообщение об ошибке в ajax от контроллера пружины

@RequestMapping(value = {"/charts"}, method = RequestMethod.POST) 
    @ResponseBody 
    public Chart handleSelectionFiled(@RequestBody Chart chart) { 

     try{ 
      chart.doSmth(); 
     } catch (Exception e) { 
      //some code to transmit exception message - this is my question  
     } 
     return chart; 
    } 

функция Аякса

$.ajax({ 
     contentType: 'application/json', 
     mimeType: 'application/json', 
     type: frm.attr('method'), 
     url: frm.attr('action'), 
     dataType: 'json', 
     data: data["chosenFile"], 
     success: function (response) { 
      turnOffPreLoader($("#defects_info"),response); 
      $('#selectionForm').submit(); 

     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      $("#result").text(errorThrown); 
      turnOffPreLoader($("#defects_info"),"default:50"); 
     } 
    }); 

ответ

1

Server Side:

@RequestMapping(value = {"/charts"}, method = RequestMethod.POST) 
@ResponseBody 
public Chart handleSelectionFiled(@RequestBody Chart chart, HttpServletRequest request, HttpServletResponse response) { 
    try{ 
     chart.doSmth(); 
    } catch (Exception e) { 
     response.setStatus(400); 
     response.getWriter().write(e.getMessage()); 
    } 
    return chart; 
} 

стороне клиента:

jQuery.ajax({// just showing how to handle error property 
     error: function(jqXHR,error, errorThrown) { 
      if(jqXHR.status && jqXHR.status==400){ 
       alert(jqXHR.responseText); 
      }else{ 
       alert("Something went wrong"); 
      } 
     } 
}); 

Общая обработка ошибок Ajax

Если мне нужно выполнить некоторую общую обработку ошибок для всех запросов ajax. Я установлю обработчик ajaxError и покажу ошибку на div с именем errorcontainer в верхней части содержимого html.

$("div#errorcontainer") 
.ajaxError(
    function(e, x, settings, exception) { 
     var message; 
     var statusErrorMap = { 
      '400' : "Server understood the request, but request content was invalid.", 
      '401' : "Unauthorized access.", 
      '403' : "Forbidden resource can't be accessed.", 
      '500' : "Internal server error.", 
      '503' : "Service unavailable." 
     }; 
     if (x.status) { 
      message =statusErrorMap[x.status]; 
          if(!message){ 
            message="Unknown Error \n."; 
           } 
     }else if(exception=='parsererror'){ 
      message="Error.\nParsing JSON Request failed."; 
     }else if(exception=='timeout'){ 
      message="Request Time out."; 
     }else if(exception=='abort'){ 
      message="Request was aborted by the server"; 
     }else { 
      message="Unknown Error \n."; 
     } 
     $(this).css("display","inline"); 
     $(this).html(message); 
    }); 
+0

Какой тип объекта ответа в Java-коде? – jenius

+0

Обновленный код, проверьте его. –

+0

не работает, errorType - "undefined error" и responseText пуст – jenius

Смежные вопросы