Я отправляю Spring Controller запрос Ajax GET с параметром Array,
$.ajax({
url: "getChoices",
dataType: "json",
type: "get",
data: {
'myarg': myarray // JS array of strings, ["a","b","c"]
// Verified to be correct
},
Метод контроллера, который должен получить этот аргумент - имя аргумента соответствует:
@ResponseBody
@GetMapping("/getChoices")
public List<KeyValueBean> getChoices(List<String> myarg) {
//...
}
Прежде всего, как написано выше, я получаю сообщение об ошибке:
[java.lang.IllegalStateException: No primary or default constructor found for interface
java.util.List]
Caused by: java.lang.NoSuchMethodException: java.util.List.<init>()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getDeclaredConstructor(Class.java:2178)
at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:216)
Затем я попытался сделать несколько настроек:
1) Сделал подпись метода a String[]
, это не то, что я хочу - мне нужен список - но попробовал на всякий случай:
public List<KeyValueBean> getChoices(String[] myarg) {
Это вошло в метод, но myarg равно NULL и не было правильно установлено.
2) Сохранял List<String>
, но пробовал JSON.stringify для массива:
JSON.stringify(myarray)
То же исключение: [java.lang.IllegalStateException: No primary or default constructor found for interface java.util.List]
Как передать аргумент Array в запросе Ajax GET в Spring Boot?