Весной передавайте данные между различными html-страницами и контроллерами - PullRequest
0 голосов
/ 20 февраля 2019

Привет, я новичок в 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 Ответ

0 голосов
/ 20 февраля 2019

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
    }

Secondстраница

<div>${aClass.loggedUser}</div>

СОВЕРШЕНО.

Таким образом, вы можете перейти на вторую страницу.И если вы хотите перенаправить на вторую страницу и там должны быть доступны атрибуты модели, вам нужно использовать flashattribute.

...