我想将消息列表从帖子重定向到获取。
@RequestMapping(method = RequestMethod.GET, value = "/ManageNonRoutedActivities")
public ModelAndView manageNonRoutedActivities(ModelAndView modelAndView,
ArrayList<Message> messages,
@ModelAttribute("nonRoutedActivity") NonRoutedActivity nonRoutedActivity,
@RequestParam(value = "search", defaultValue = "") String search,
@RequestParam(value = "orderField", defaultValue = "Description") String orderByField,
@RequestParam(value = "orderDirection", defaultValue = "asc") String orderByDirection) {
ManageNonRoutedActivitiesRequest request = new ManageNonRoutedActivitiesRequest(new ManageNonRoutedActivitiesDAOImpl(), search, orderByField, orderByDirection);
System.out.println(messages.size());
modelAndView.setViewName("default");
modelAndView.addObject("viewModel", new ManageNonRoutedActivitiesImpl(request, search, orderByField, messages));
return modelAndView;
}
@RequestMapping(method = RequestMethod.POST, value = "/ManageNonRoutedActivities")
public String updateOrCreateActivity(@Valid NonRoutedActivity nonRoutedActivity,
BindingResult result,
RedirectAttributes redirectAttributes) {
SecurityAccessor securityAccessor = new SecurityAccessor();
ArrayList<Message> messages = new ArrayList<>();
if (result.hasErrors()) {
return manageErrorsForManageNonRoutedActivities(result, nonRoutedActivity, redirectAttributes, messages);
}
if (nonRoutedActivity.shouldUpdateEndDate()) {
nonRoutedActivity.updateEndDate();
messages.add(new Message("endDate.add.success", "success"));
} else
messages.add(new Message("activity.add.success", "success"));
nonRoutedActivity.setModifiedBy(securityAccessor.getLoggedInUsersName());
nonRoutedActivity.save();
redirectAttributes.addFlashAttribute("messages", messages);
return "redirect:/ManageNonRoutedActivities";
}
我遇到的问题是控制器的get部分中的消息一直显示为空。我最初将此
messages
实例作为List<Message>
,但是由于messages
可以为null,因此无法正常工作。由于无法实例化List
,因此引起了问题。这就是为什么我使用ArrayList
的原因。但是,这不起作用,因为ArrayList
没有正确绑定。任何人都知道为什么会这样,以及如何在不为列表创建包装器的情况下解决此问题? 最佳答案
因此,我不确定这是否是最佳解决方案,但是如果我删除redirect属性的名称,它将起作用。