#javascript #java #spring-boot
#javascript #java #весенняя загрузка
Вопрос:
Я пытаюсь опубликовать список строк из моего интерфейса Javascript в Spring Boot Controller, по какой-то причине происходит публикация, но мои значения равны нулю. Есть ли что-то явно неправильное в моем коде?
Интерфейс:
let bemsidList = new Array()
bemsidList[0] = "3129426";
bemsidList[1] = "240540";
let postData = { bemsids: bemsidList};
var xhr = new XMLHttpRequest();
xhr.open("POST", "/admin/delete-email", true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify({
postData
}));
Оболочка:
public class EmailWrapper {
List<String> bemsids;
public List<String> getBemsids() {
return bemsids;
}
public void setBemsids(List<String> bemsids) {
this.bemsids = bemsids;
}
}
Контроллер:
@RequestMapping(
value = "/admin/delete-email",
method = RequestMethod.POST,
consumes = "application/json")
public String deleteEmail(@RequestBody EmailWrapper wrapper, Model model) {
List<String> ids = wrapper.getBemsids();
for (String s : ids) {
EmailEntity emailEntity = emailRepository.findByOwnerBemsid(s);
emailRepository.delete(emailEntity);
}
model.addAttribute("category", "admin");
model.addAttribute("subCategory", "email");
return "pages/index";
}
Отладка — точка останова:
Ответ №1:
Аннотация requestbody используется для restful приложений и modelattribute для web mvc. вы смешиваете оба, и в этом проблема. Можете ли вы попробовать изменить requestbody с помощью modelattribute и использовать данные формы вместо запроса xhr для отправки данных из интерфейса.
Комментарии:
1. Спасибо за ваш ответ, к сожалению, добавление кавычек вокруг ключа, похоже, не помогает. Я все еще получаю пустой EmailWrapper в моем контроллере. Вот данные json, отправляемые на серверную часть: {«bemsids»:[«3129426″,»240540»]}
2. Какие аннотации вы используете, controller или restcontroller
3. Класс контроллера использует аннотацию контроллера. Метод использует аннотацию RequestMapping с методом, установленным в RequestMethod. Публикация
4. requestbody используется для restful приложений и modelattribute для web mvc. вы смешиваете оба, и в этом проблема. Можете ли вы попробовать изменить тело запроса с помощью modelattribute
5. Спасибо за ваше понимание. Я изменил dto во внешнем интерфейсе и превратил его в объект FormData, а аннотацию RequestBody заменил на ModelAttribute, и, похоже, сейчас у меня это работает. Если вы отредактируете свой ответ, я приму его. Спасибо!