Вызов 2 метода PostMapping на один адрес
У меня есть 2 формы с методами POST в одном html-файле.
Как я могу в Controller обрабатывать запрос первой формы когда нужно и обрабатывать запрос второй формы когда нужно?
То есть когда я нажимаю на button первой формы, я хочу вызывать метод (например "Form1"), а когда нажимаю на button второй формы, я хочу вызвать метод "Form2".
<form th:action="@{/finish_registration}" th:object="${newUser}" method="post">
...
<form th:action="@{/finish_registration}" th:object="${newUser}" method="post" enctype="multipart/form-data">
<div style="padding-top: 1rem;">
<label for="file-upload" class="btn btn-sm main_btn">
Upload Image
</label>
<input id="file-upload" type="file" name="file" class="btn btn-sm main_btn"/>
<button type="submit" class="btn btn-primary btn-sm col-sm-7"/>
</div>
</form>
...
<button type="submit" value="Registration" name="save" class="btn btn-primary btn-sm col-sm-7"/>
</form>
Ответы (1 шт):
Автор решения: Roman C
→ Ссылка
Итак одна форма может маппиться на один метод в контроллере, но нажатие кнопки может поменять назначение формы. Так, например
<button value="Registration 1" onclick="form.action='/finish_registration/Registration1;form.submit()">
<button value="Registration 2" onclick="form.action='/finish_registration/Registration2;form.submit()">
Соответственно на разные методы ставить соответствующую аннотацию.
@RequestMapping("/finish_registration/Registration1")
@RequestMapping("/finish_registration/Registration2")