Как я могу вызвать метод из контроллера в тимелеаф без изменения URL-адреса

У меня есть html-страница с Thymeleaf, и у меня есть кнопка на этой странице. Эта кнопка вызывает метод из контроллера, который я сопоставил с /addService, но возвращает страницу /index (потому что я уже на этой странице и хочу остаться на ней). Поэтому, когда я нажимаю кнопку, она перенаправляет меня на страницу индекса, но URL-адрес изменяется с помощью /addService. Я хотел бы остаться на главной странице без /assService в URL-адресе. Ниже мой код формы и контроллера. Как я могу избежать такого поведения? Заранее спасибо.

Мой index.html

<form action="#" th:object="${serviceOffered}" th:action="@{addService}" method="POST">
    <input type="hidden" th:value="${serviceOffered.name}" name="name"/>
    <button type="submit" class="btn">
        <i class="fas fa-plus"></i>
    </button>
</form>

Мой контроллер

@RequestMapping(value="addService", method = RequestMethod.GET)
public ModelAndView getServiceSelected() {

    ModelAndView modelAndView = new ModelAndView();
    ServiceOffered serviceOffered = new ServiceOffered();

    modelAndView.addObject("serviceOffered", serviceOffered);

    modelAndView.setViewName("/index");
    return modelAndView;
}

person andrea    schedule 13.02.2019    source источник
comment
without the /assService in the URL Некрасиво?   -  person Michael    schedule 13.02.2019


Ответы (2)


Использовать перенаправление

modelAndView.setViewName("redirect:/");

И определите свой URL "/"

@GetMapping("/")
public String indexPage() {
    return "index":
}
person Trần Quốc Vũ    schedule 13.02.2019

Предполагая, что вы используете Spring MVC, вы должны изменить RequestMethod на POST, потому что вы отправляете форму. В противном случае запрос обрабатывается неправильно.

person Toriho    schedule 13.02.2019