Почему Firefox отправляет заново информацию после выполнения post запроса
Ошибка:
To display this page, Firefox must send information that will repeat any action (such as a search or order confirmation) that was performed earlier
Вот перевод:
Чтобы отобразить эту страницу, Firefox должен отправить информацию, которая будет повторять любое действие (например, поиск или подтверждение заказа), выполненное ранее.
Такая ошибка возникла при разработке сайта с использованием Thymeleaf и Java 21.
Возникла при добавлении к тэгу HTML type="submit" (<button type="submit" class="button">) или из-за чего-то другого. Почему она возникла?
Прилагаю вероятный код, из-за которого и возникла эта ошибка... может быть. Заранее вас благодарю за ответы!
Контроллер:
@PostMapping
public String commentAdd(@RequestParam String name, @RequestParam String text, Model model) {
Comment comment = new Comment(name, text);
commentRepository.save(comment);
return "index";
}
Сам html-документ (не весь естественно):
<div class="container-comment">
<div class="comment">
<form class="comment-input-button" method="post">
<div class="comment-input">
<div class="field">
<input type="text" name="name" class="name" placeholder="Имя">
</div>
<div class="field">
<textarea name="text" class="text" placeholder="Текст"></textarea>
</div>
</div>
<button type="submit" class="button">
ДОБАВИТЬ
</button>
</form>
<div class="comments" th:each="comment : ${comments}">
<div th:text="${comment.username}" class="name_user"></div>
<div th:text="${comment.text}" class="text_user"></div>
</div>
</div>
</div>
Ответы (1 шт):
Да, точно на тэге <form> нужно ставить атрибут th:action, чтобы было видно куда отправляется post запрос. А ошибка возникает потому что страница перегружается после отправки формы на сервер.
Вот правильный ответ:
Это происходит, когда вы обновляете страницу, являющуюся результатом запроса POST (а не запроса GET).
Чтобы избежать этого, вы можете использовать шаблон POST/redirect/GET.
А вот ещё есть другой ответ на Зачем нужна решетка в этом запросе и чем первый action отличается от второго?:
... При этом значение фрагмента
#предохраняет страницу от рефреша.