Как передать Array param в axios, чтобы добраться до пружинного контроллера? - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь передать массив имен контроллеру пружины, используя axios get request. Если я пытаюсь передать одно значение в параметрах, он работает нормально, но если передать массив в параметрах, я получаю ошибку "CORS header 'Access-Control- Разрешить-Происхождение «отсутствует». Я попробовал это

это URL

http://localhost:8080/onlineshopping/view/category/products?name[]=Alex&name[]=john

taskAction.js

var request = {
params: {
name : JSON.parse(localStorage.getItem('name')) 
   }
} 
const res = await axios.get(`http://localhost:8080/onlineshopping/view/category/products`,request);

dispatch({
type: GET_CATEGORY_PRODUCTS,
payload: res.data
});
};

но это не работает

Мой пружинный контроллер

@RequestMapping(value = "/view/category/products")
public Map<String, Object> viewProducts(
        @RequestParam(value = "name[]", required = false) List<String> name,
        HttpServletRequest request, HttpServletResponse response) {

    Map<String, Object> mapproducts = new HashMap<String, Object>();

    for (String Str : name) {
        System.out.println("name " + Str);
    }

1 Ответ

0 голосов
/ 13 января 2019

Вы можете использовать библиотеку запросов и строк для разбора строк qs.

import Qs from 'qs'

params = {
name : JSON.parse(localStorage.getItem('name')) 
}

let myAxios = axios.create({
  paramsSerializer: params => Qs.stringify(params, {arrayFormat: 'repeat'})
})

const res = await 
myAxios.get(`http://localhost:8080/onlineshopping/view/category/products`, {params});

dispatch({
type: GET_CATEGORY_PRODUCTS,
payload: res.data
   });
};

Вы получите URL, как это

http://localhost:8080/onlineshopping/view/category/products?name=Alex&name=john

и в контроллере пружины вы можете разделить строку, используя

Arrays.asList(name.split("\\s*,\\s*"))

пружинный контроллер

@RequestMapping(value = "/view/category/products")
public Map<String, Object> viewProducts(
    @RequestParam(value = "name", required = false) String name,
    HttpServletRequest request, HttpServletResponse response) {

 List<String> name = Arrays.asList(name.split("\\s*,\\s*"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...