#java #spring #spring-boot #spring-mvc #web-applications
Вопрос:
Я пытаюсь забронировать столик. Но когда я нажимаю кнопку «Таблица книг», я получаю ошибку. Ошибка в том, что метод запроса «POST» не поддерживается. Я делал это раньше в других подобных проектах, это сработало. Я думаю, что проблема в HTML-файле, но я не смог его найти. Как я могу Это исправить? Вот мой класс сущностей
@Entity
@Table(name = "reservation")
public class Reservation {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "arrival_date")
private String arrivalDate;
@Column(name = "arrival_time")
private String arrivalTime;
@Column(name = "num_of_person")
private String numOfPerson;
@Column(name = "first_name")
private String firstName;
@Column(name = "email")
private String email;
@Column(name = "phone_number")
private String phoneNumber;
Вот мой класс контроллера
@Controller
public class RestaurantController {
@Autowired
private ReservationService reservationService;
@InitBinder
public void init(WebDataBinder binder) {
StringTrimmerEditor editor = new StringTrimmerEditor(true);
binder.registerCustomEditor(StringTrimmerEditor.class, editor);
}
@GetMapping("/")
public String home() {
return "index";
}
@GetMapping("/reservation")
public String reservation(Model model) {
model.addAttribute("newRes", new Reservation());
return "reservation";
}
@PostMapping("/save-reservation")
public String proceed(@Valid @ModelAttribute("newRes") Reservation reservation, BindingResult result, Model model) {
reservationService.saveReservation(reservation);
return "redirect:/reservation";
}
}
А вот мой HTML-файл
<form id="contactForm" th:action="@{/save-reservation}" th:object="${newRes}" method="post" >
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
<div class="row">
<div class="col-md-6">
<h3>Book a table</h3>
<div class="col-md-12">
<div class="form-group">
<input id="input_date" class="datepicker picker__input form-control" th:field="*{arrivalDate}" type="text" value="" equired data-error="Please enter Date">
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input id="input_time" class="time form-control picker__input" th:field="*{arrivalTime}" required data-error="Please enter time">
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<select class="custom-select d-block form-control" id="person" th:field="*{numOfPerson}" required data-error="Please select Person">
<option value="0">Select Person*</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="col-md-6">
<h3>Contact Details</h3>
<div class="col-md-12">
<div class="form-group">
<input type="text" class="form-control" id="name" th:field="*{firstName}" placeholder="Your Name" required data-error="Boş Bırakılamaz">
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="text" placeholder="Your Email" id="email" class="form-control" th:field="*{email}" required data-error="Boş Bırakılamaz">
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input type="text" placeholder="Your Numbar" id="phone" class="form-control" th:field="*{phoneNumber}" required data-error="Boş Bırakılamaz">
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="col-md-12">
<div class="submit-button text-center">
<button class="btn btn-common" id="submit" type="submit">Book Table</button>
Комментарии:
1. Пожалуйста, добавьте ошибку/трассировку стека в свой вопрос.
2. Ошибка в том, что метод запроса «POST» не поддерживается.
3. Это не ответ на мой вопрос. Пожалуйста, добавьте полную ошибку и/ или трассировку к вашему вопросу. Это всего лишь фрагмент (первая строка или около того).
4. ты имеешь в виду вот так? Когда я нажимаю кнопку «Таблица книг». w.s.m.s.DefaultHandlerExceptionResolver : Решен [org.springframework.web.httprequestметодно не поддерживается Исключение: Метод запроса «POST» не поддерживается]
Ответ №1:
Ваша реализация верна. попробуйте перезагрузить maven или очистить свой кэш
Комментарии:
1. все еще не работает. Я не понимаю. Я сделал еще несколько подобных проектов, и все они сработали. Я не понимаю, почему это не работает.
Ответ №2:
добавьте эту зависимость в свой pom.xml… Я запустил ваш код в своей системе. Он работает нормально, скорее всего, страница, которую вы получаете, находится в кэше.Используйте эту зависимость, она не позволяет хранить какие-либо значения в кэше.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
Комментарии:
1. все равно не работает. Я использовал те же методы в другом проекте, и это сработало. Я не понимаю, почему это не работает
2. хорошо, давайте проверим, что кэширование меняет это reservetaion.html назовите какой-нибудь ресурс и попробуйте..я скопировал тот же код, что и вы, и я получаю правильный вывод
3. Одна вещь, которую я забыл вам сказать, я удалил @Valid из сопоставления сообщений. это единственное изменение, которое я внес в ваш код.
4. ни один мужчина не остался прежним. похоже, я не могу это исправить.
5. Можете ли вы поделиться трассировкой стека ошибок со своего терминала/консоли ide