Весной передавайте данные между различными html-страницами и контроллерами
Привет, я новичок в Spring и у меня проблемы с передачей данных между двумя страницами с использованием двух разных контроллеров. Я хотел бы знать, как я могу справиться с этими ситуациями. В моем index.html у меня есть кнопка, которая должна перенаправить меня на новую страницу с некоторыми данными. Когда я нажимаю кнопку, он перенаправляет меня на страницу step2, но мне не нужны объекты. Как я могу решить это? Является ли метод GET правильным? Нужно ли использовать форму только для передачи данных между страницами и контроллерами? Ниже то, что у меня есть.
Index.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>
Step2Controller
@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;
}
Извините за все вопросы, но я новичок в весеннем развитии.
1 ответ
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
,