400 неверных запросов при отправке данных с помощью ajax в рамках Spring - PullRequest
0 голосов
/ 07 апреля 2019

Попытка передать объект JavaScript в Spring MVC. Я получаю 400 ошибочных запросов. Перепробовал все разные подходы но все равно не повезло. Я прикрепил контроллер, объект, который я передаю в JS и Java, и ответ. Буду признателен за любую помощь. Когда я изменяю @RequestBody на @ModelAttribute, я получаю параметры в контроллерах, но целые числа равны нулю, а массивы пусты.

Контроллер

    @RequestMapping(value="/getInstrumentsByTypeMakeModel" , method=RequestMethod.GET)
    public @ResponseBody List<Instrument> getInstrumentsByTypeMakeModel(@RequestBody SearchInstrument search) {
     // do Something and create searchResult;   
    return searchResult;
}

JavaScript

var searchInstrument = {

    operator: siteOperator,
    companyId:loggedInUserCompanyId ,
    isServiceProvider:isServiceProvider ,
    types:selectedType,
      makes:selectedMake,
      models:selectedModel,
      typeOthers:selectedTypeOther,
      makeOthers:selectedMakeOther,
      modelOthers:selectedModelOther

    };



     jQuery.ajax({
         url:server_name+ "/getInstrumentsByTypeMakeModel",
         type: "GET",
        dataType: "JSON",
        data:JSON.stringify(searchInstrument),   
         contentType: 'application/json; charset=utf-8',
         success: function(resultData) {
             console.log(resultData);
            },
             error: function(jqXHR, status) {
                 // error handler

            }
        }); 

Класс SearchInstrument

public class SearchInstrument  {
    public SearchInstrument(){

    }

        public SearchInstrument(int operator,int companyId, boolean isServiceProvider,
                List<Integer>  types,List<Integer>  makes,  List<Integer>  models,
                List<String>  typeOthers,List<String>  makeOthers,List<String>  modelOthers
                ){

this.operator=operator;
this.companyId=companyId;
this.types=types;
this.makes=makes;
this.models=models;
this.typeOthers=typeOthers;
this.makeOthers=makeOthers;
this.modelOthers=modelOthers;
        }
        private int operator;
        private int companyId;
        private boolean isServiceProvider;
        private List<Integer>  types=new ArrayList<Integer> ();
        private List<Integer>  makes=new ArrayList<Integer> ();
        private List<Integer>  models=new ArrayList<Integer> ();    
        private List<String>  typeOthers=new ArrayList<String> ();
        private List<String>  makeOthers=new ArrayList<String> ();
        private List<String>  modelOthers=new ArrayList<String> ();

//getters and setters       

    }

[Это параметры] [https://i.stack.imgur.com/2cxde.png]

[и это URL:] [https://i.stack.imgur.com/BPMaS.png]

1 Ответ

0 голосов
/ 07 апреля 2019

Я не совсем уверен, но просто не кажется лучшей идеей объединить запрос GET и попытаться передать объект, поэтому вы видите свой объект searchController JS по URL, во второйкартина.

Следующий вопрос содержит более подробное объяснение.

Я думаю, вам следует попытаться преобразовать его в запрос POST.

В качестве альтернативы, если вы все же хотите сохранить его как GET по вашим причинам, вы должны передать свой объект в качестве параметров в URL и использовать @RequestParam в вашем контроллере.

...