В контроллере делаю запрос через Ext.Ajax.request, после запроса в БД полученное отправляю обратно, присваивая полю response полученные данные. Суть в том что при попытке получить данные (response.data) со стороны ExtJS выдает ошибку 500 (Internal Server Error). Получается корректно отправить только простые типы вроде string. Как передать более сложную структуру, поскольку у меня приложение для тестирования, где каждый вопрос на двух языках и к каждому вопросу привязаны так же четыре вариантов ответов на двух языках. На ум приходит только сформировать json и распарсить его в js. Или есть еще способы передачи данных в extjs?
Вот немного кода. ExtJS:
Ext.Ajax.request({
url: baseRoot + 'portal/test',
method: 'GET',
success: function (response) {
console.log(response);
},
failure: function () {
Ext.Msg.alert('Тест', 'Не удалось получить информацию о текущих вопросах');
}
});
Java, execute проверяет авторизацию пользователя:
@RequestMapping(value = "/test", method = RequestMethod.GET)
public
@ResponseBody
AjaxResponse getTest(HttpServletRequest request, HttpServletResponse response) {
return execute(request, response, (user, request1, response1, ajaxResponse) -> {
Questionnaire questionnaire = bean.getQuestionnaire();
ajaxResponse.setCode(RESULT_CODE_SUCCESS);
ajaxResponse.setSuccess(true);
ajaxResponse.setData(questionnaire);
});
}
Я так полагаю, что ошибка 500 возникает не при получении response, а при отправке request. Откажитесь от GET в пользу POST, и как Вы и задумываете, используйте json. Особо парсить там ничего не нужно, все механизмы уже встроены, просто обращаетесь к полю JSON-ответа как свойству объекта response.
Например:
success: function(result) {
alert('ID: ' + result.id
+ ', Message: ' + result.message);
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости