Передача данных из Thymeleaf в контроллер с помощью Spring - PullRequest
0 голосов
/ 12 февраля 2019

Привет, я новичок в разработке Spring и Thymeleaf и пытаюсь понять, как передавать данные между Thymeleaf и контроллером.Я знаю, как передавать данные наоборот.С данными, которые я передаю от контроллера к представлению, я строю таблицу, в которой у меня есть два столбца (один - кнопка для выбора службы, а другой - имя службы) и столько строк, сколько служба, котораяЯ имею.То, что я хочу сделать, это захватить идентификатор выбранной услуги (при нажатии кнопки добавления, и я могу нажать одну кнопку только один раз, но я могу нажать все остальные) и выполнить некоторую внутреннюю обработку с ней (на данный моментя просто пытаюсь напечатать значение).Другое дело, что после нажатия на кнопку он перенаправляет меня на страницу индекса, но добавляет / addService в конце URL, и я этого не хочу (я хочу остаться на той же странице с тем же URL).Как я могу решить эту проблему?

index.html

<table id="html-table" class="table table-hover table-clean table">
    <thead>
        <tr>
            <th>Select</th>
            <th>Service</th>
        </tr>
    </thead>
    <tbody>
        <tr th:each="serviceOffered : ${servicesOffered}">
            <td>
            <form action="#" th:value="${serviceOffered.id}" th:object="${serviceOffered}" th:action="@{/addService}" method="POST">
                <button type="submit" class="btn" name="${serviceOffered.id}">
                    <i class="fas fa-plus"></i>
                </button>
                </form>
            </td>
            <td th:value="${serviceOffered.name}" th:text="${serviceOffered.name}"></td>
        </tr>
    </tbody>
</table>

Контроллер

@RequestMapping(value="/addService", method = RequestMethod.POST)
public ModelAndView addService(@Valid ServiceOffered serviceOffered, BindingResult bindingResult){
    ModelAndView modelAndView = new ModelAndView();

    System.out.println("VALUE " + serviceOffered.getId());

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

1 Ответ

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

Ваша форма имеет кнопку типа submit.Когда вы нажимаете кнопку, она отправляет форму.В вашем контроллере вы перенаправляете на страницу index.Если вы хотите нажать на кнопку и просто отправить значение услуги без перезагрузки страницы, вам нужно использовать вызов jquery ajax. docs Вот пример кода вызова ajax.

$.ajax({
url: '/your url',
method: 'post',
data: 'your data'
}).then(function(response){
// do what ever you want with your response.
})

ПОМНИТЕ: Вам необходимо добавить @Responsebody аннотацию для вашего метода в классе контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...