Я хочу добавить некоторые атрибуты в модель, но по какой-то причине один из атрибутов не добавляется в модель для конкретного обработчика запросов.Атрибут Spring не добавляется в модель
Два атрибута: numberDeleted
и usersDeleted
.
usersDeleted
по какой-либо причине не добавляется к модели на третьем обработчике запросов.
Вот код: (Примечание: некоторые строки кода были удалены для краткости. Отображается только соответствующий код).
Сначала я удалить некоторые выбранных пользователей:
@RequestMapping(value = "/delete", method = RequestMethod.DELETE)
public String delete(
@ModelAttribute("credentials") Credentials credentials,
@ModelAttribute("deleteUsersForm") DeleteUsersForm form,
@ModelAttribute("searchCriteria") SearchForm searchForm,
Model model, RedirectAttributes redirect) {
String[] usersDeleted = form.getCheckedUsers();
if (usersDeleted != null) {
for (int i = 0; i < usersDeleted.length; i++) {
System.out.println("user (delete): " + usersDeleted[i]);
}
}
redirect.addFlashAttribute("usersDeleted", usersDeleted);
redirect.addFlashAttribute("numberDeleted", numberDeleted);
redirect.addFlashAttribute("searchForm", searchForm);
return "redirect:" + searchForm.getSelectedOption();
}
После того, как выбранные пользователи будут удалены из базы данных, я делаю вызов REST API, чтобы получить существующие в настоящее время пользователей и добавить их в модель, а также numberDeleted
и usersDeleted
из функции удаления выше:
@RequestMapping(value = "/getAllUsers", method = RequestMethod.GET)
public String getAllUsers(@ModelAttribute Credentials credentials,
RedirectAttributes redirect, Model model) {
SearchForm searchForm = new SearchForm("/getAllUsers", "allUsers");
redirect.addFlashAttribute("users", users);
redirect.addFlashAttribute("searchCriteria", searchForm);
/* If users deleted: */
Integer numberDeleted = (Integer) model.asMap().get("numberDeleted");
String[] usersDeleted = (String[]) model.asMap().get("usersDeleted");
redirect.addFlashAttribute("numberDeleted", numberDeleted);
redirect.addFlashAttribute("usersDeleted,", usersDeleted);
if (usersDeleted != null) {
for (int i = 0; i < usersDeleted.length; i++) {
System.out.println("user: (getAllUsers) " + usersDeleted[i]);
}
}
return "redirect:/adminHome";
}
usersDeleted
и numberDeleted
не обнулить до этого момента, и я могу распечатать их значение.
Тогда я вызываю запрос на список пользователей:
@RequestMapping(value = "/adminHome", method = RequestMethod.GET)
public String getAdminHomePage(Model model) {
SearchForm searchCriteria = (SearchForm) model.asMap().get(
"searchCriteria");
/* If users were deleted: */
Integer numberDeleted = (Integer) model.asMap().get("numberDeleted");
String[] usersDeleted = (String[]) model.asMap().get("usersDeleted");
model.addAttribute("numberDeleted", numberDeleted);
model.addAttribute("usersDeleted,", usersDeleted);
if (usersDeleted != null) {
for (int i = 0; i < usersDeleted.length; i++) {
System.out.println("user: (adminhome) " + usersDeleted[i]);
}
}
.....
return "admin_home";
}
Однако, на данный момент, usersDeleted
равна нулю (так как ничего не печатает), но numberDeleted
не равно нулю.
Я буквально не понимаю, что происходит. Почему это null? Я явно добавил его в модель.
EDIT 1: В настоящее время мой только временное решение добавить usersDeleted
к @SessionAttributes
.
Но я не должен был прибегать к этому.
Существует тип. Удалите запятую: model.addAttribute ("usersDeleted", usersDeleted); shoudl be model.addAttribute ("usersDeleted", usersDeleted); –
@ Rossi Robinsion WOW спасибо! Может быть, мне нужно вздремнуть или отдохнуть. Мое сознание сбито с толку. Можете ли вы написать это как ответ, чтобы я мог его принять? – Kingamere
Это так. Не беспокойся! –