Как Spring mvc получает массив axios? - PullRequest
0 голосов
/ 23 сентября 2018

В классе контроллера бренда я хочу сделать это:

@RequestMapping(value = "brand",method = RequestMethod.GET)
@ResponseBody
public Object deleteByIds(int[] ids) {
    System.out.println(ids);
    goodsBrandService.deleteByIds(ids);
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("msg","success to delete");
    return jsonObject;
}

Когда получает массив, но он дает мне ноль.

У меня есть отображениефайл :

<delete id="deleteByIds" parameterType="list">
    DELETE FROM
    goods_brand
    WHERE brand_id IN
  <foreach collection="array" item="item" open="(" separator="," close=")">
    ${item}
  </foreach>

Я использую axios в Vue.js для отправки параметров Spring MVC, например:

 // Determine bulk delete
 multiDelete() {
  let checkArr = this.multipleSelection;
  let params = [];
  let self = this;
  checkArr.forEach(function (item) {
    params.push(item.brandId); 
  });
  console.log(params); 
  this.$http.get('http://localhost:9090/brand', params).then(function (res) {
    if (res) {
      self.$message({
        message: 'success to delete',
        type: 'success'
      });
    }
  }).then(error => {
    this.$message.error("failed to delete");
  })
  this.multiDeleteVisible = false; //close delete bullet box
}

Когда Axios отправляется,в браузере chrome выведите на консоль console.log(params), например:

(2) [43, 41]
    0: 43
    1: 41
    length: 2
    __proto__: Array(0)

В параметре указано [], как Spring MVC принимает правильный массив?

1 Ответ

0 голосов
/ 23 сентября 2018

Это должно быть так

@RequestMapping(value = "brand/{ids}",method = RequestMethod.GET)
@ResponseBody
public Object deleteByIds(@PathVariable Integer[] ids) {
 System.out.println(ids);
 goodsBrandService.deleteByIds(ids);
 JSONObject jsonObject = new JSONObject();
 jsonObject.put("msg","success to delete");
 return jsonObject;
}

Я думаю, что это должно быть так:

@RequestMapping(value = "brand",method = RequestMethod.GET)
@ResponseBody
public Object deleteByIds(@RequestParam(value="ids[]") Integer[] ids) {

}

Но я рекомендую использовать метод POST вместо GETпоэтому ваше сопоставление запроса изменится на следующее:

@RequestMapping(value = "brand",method = RequestMethod.POST)
@ResponseBody
public Object deleteByIds(@RequestBody WarapperList ids) {

}

и WrapperList - это такой класс:

class WrapperList{
    private List<Integer> ids;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...