Я следующее отображение Спринг контроллера:Пружина контроллер 400 плохо запрос и применение/х-WWW-форм-urlencod в/с приложения/JSON
@RequestMapping(value="/isSomethingHappening", method = RequestMethod.POST)
public @ResponseBody JsonResponse isSomethingHappening(HttpServletRequest httpRequest,@RequestParam("employeeId") String employeeId,
ModelMap model) throws IOException{
Если я ссылаться на это, как показано ниже, то я получаю 400 ответа.
var requestData = {"employeeId":XYZ.application.employeeId};
XYZ.network.fireAjaxRequestAsync("application/json", "forms/testing/isSomethingHappening", requestData, function(response, status, xhr){
Но если я вызываю это, как показано ниже, я получаю ответ успеха.
var requestData = {"employeeId":XYZ.application.employeeId};
XYZ.network.fireAjaxRequestAsync("application/x-www-form-urlencoded", "forms/testing/isSomethingHappening", requestData, function(response, status, xhr){
Я понял, исправление, но я не могу понять, почему первый один дал мне ошибку, когда объект мои данные запроса var requestData = {"employeeId":XYZ.application.employeeId};
остались неизменными, и я просто изменил тип содержимого. Мне application/json
выглядит более подходящий тип контента, потому что мои данные запроса являются объектами JSON.
Кроме того, у меня есть другие случаи, когда мое отображение контроллера, как показано ниже:
@RequestMapping(value = "/getOnFlyResults", method = RequestMethod.POST)
public @ResponseBody JsonResponse getOnFlyResults(HttpServletRequest httpRequest,
@RequestBody testingRequestVO testingRequestVO, ModelMap modelMap) throws IOException{
И для вызова этого я отправить запрос, как показано ниже:
var requestData = {"employeeId":XYZ.application.employeeId,
"fName":XYZ.application.fName,
"lName": XYZ.application.lName,
"telephoneNumber":telephoneNumber,
"testMode":XYZ.constant.onFly};
XYZ.network.fireAjaxRequestAsync("application/json", "forms/testing/startTest", JSON.stringify(requestData), function(response, status, xhr){
Я не понять, почему мне приходится строгать данные с помощью JSON.stringify(requestData)
, если я этого не сделаю, тогда я получу 400.
После того, как я стягиваю, он становится строкой, тогда мой тип содержимого должен быть text/plain
, но он работает с application/json
Обратите внимание, что я знаю, что исправления кода, но я хочу понять концепцию. Я прочитал this, и он не объясняет концепцию в деталях и запросах, которые у меня есть.
У вас есть библиотека jackson, настроенная как зависимость для вашего приложения? – pczeus
@pczeus Nops ... – hagrawal
Использование Maven? Gradle? – pczeus