Привет, я новичок в Spring, и у меня проблемы с передачей данных между двумя страницами с использованием двух разных контроллеров. Я хотел бы знать, как я могу справиться с этой ситуацией. В моем index.html у меня есть кнопка, которая должна перенаправить меня на новую страницу, передающую некоторые данные. Когда я нажимаю кнопку, она перенаправляет меня на страницу шага 2, но мне не нужны объекты. Как я могу это решить? Правилен ли метод GET? Должен ли я использовать форму только для передачи некоторых данных между страницами и контроллерами? Ниже то, что у меня есть.
Индекс.html
<form th:action = "@{/step2}" method = "GET">
<input type = "hidden" th:value = "${mapSelectedServices}" name = "mapSelectedServices"/>
<input type = "hidden" th:value = "${user}" name = "loggedUser"/>
<div class = "form-group d-flex align-items-center justify-content-between">
<button type = "submit" class = "btn btn-danger btn-rounded ml-auto" >SEE PRICES
<i class = "fas fa-long-arrow-alt-right ml-2"></i>
</button>
</div>
</form>
Step2Контроллер
@RequestMapping(value = "step2", method = RequestMethod.GET)
public ModelAndView step2(ModelAndView modelAndView, @ModelAttribute("user") User user,
@ModelAttribute("mapSelectedServices") HashMap<String,List<ServiceOffered>> mapSelectedServices,
BindingResult bindingResult){
modelAndView.addObject("user", user);
modelAndView.addObject("mapSelectedServices", mapSelectedServices);
modelAndView.setViewName("step2");
return modelAndView;
}
Извините за все вопросы, но я новичок в весенней разработке.




HTML-страница:
<form th:action = "@{/step2}" method = "POST">
<input type = "hidden" th:value = "${mapSelectedServices}" name = "mapSelectedServices"/>
<input type = "hidden" th:value = "${user}" name = "loggedUser"/>
<div class = "form-group d-flex align-items-center justify-content-between">
<button type = "submit" class = "btn btn-danger btn-rounded ml-auto" >SEE PRICES
<i class = "fas fa-long-arrow-alt-right ml-2"></i>
</button>
</div>
</form>
Метод контроллера:
public ModelAndView goToPgae2(@ModelAttribute ModelClass aClass)
{
ModelAndView mv=new ModelAndView("SecondHtlmPageName");//setting view name here
mv.addAttribute("aClass",aClass);
return mv;
}
Класс модели с конкретными переменными, передаваемыми с одной страницы на другую:
class ModelClass {
public Stirng mapSelectedServices; //use appropriate data type.
public String loggedUser;
//create getters and setters
}
Вторая страница
<div>${aClass.loggedUser}</div>
ВЫПОЛНЕНО.
Таким образом, вы можете перейти на вторую страницу. И если вы хотите перенаправить на вторую страницу и там должны быть доступны атрибуты модели, вам нужно использовать flashattribute.
Я пытался, но получаю сообщение об ошибке преобразования между строкой и картой. Это ошибка: Cannot convert value of type 'java.lang.String' to required type 'java.util.Map' for property 'mapSelectedServices': no matching editors or conversion strategy found
@andrea да, вот почему я упомянул в коде об использовании соответствующего типа данных.
Как вы написали, я создаю новый класс с атрибутом Map as. Разве карта не является подходящим типом данных?
эй, я думаю, сначала вы прочитали этот учебник. в этом руководстве вы знаете, в каком методе используется tutorialspoint.com/http/http_methods.htm