【问题标题】:org.springframework.web.HttpRequestMethodNotSupportedException Request method 'POST' not supportedorg.springframework.web.HttpRequestMethodNotSupportedException 不支持请求方法“POST”
【发布时间】:2021-09-20 11:18:18
【问题描述】:

我正在尝试预订一张桌子。但是当我按下书桌按钮时,我得到了一个错误。错误是不支持请求方法“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>

【问题讨论】:

  • 请将错误/堆栈跟踪添加到您的问题中。
  • 错误是不支持请求方法'POST'。
  • 这不能回答我的问题。请在您的问题中添加完整的错误和/堆栈跟踪。那只是一个 sn-p(第一行左右)。
  • 你的意思是这样吗?当我按下 Book Table 按钮 .w.s.m.s.DefaultHandlerExceptionResolver :已解决 [org.springframework.web.HttpRequestMethodNotSupportedException:不支持请求方法“POST”]

标签: java spring spring-boot spring-mvc web-applications


【解决方案1】:

在您的 pom.xml 中添加此依赖项...我在我的系统中运行了您的代码。它运行良好很可能您获取的页面来自缓存使用此依赖项,它不允许在缓存中存储任何值。

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
</dependency>

【讨论】:

  • 还是不行。我在另一个项目中使用了相同的方法,并且成功了。我不明白为什么这不起作用
  • 好的,让我们验证缓存的东西将reservetaion.html名称更改为某个res并尝试..我复制了您提供的相同代码,我得到了正确的输出
  • 有一件事我忘了告诉你我从发布映射中删除了@Valid。这是我对您的代码所做的唯一更改。
  • 没有人仍然一样。看起来我无法解决这个问题。
  • 你能从你的 ide 终端/控制台分享错误堆栈跟踪吗
【解决方案2】:

您的实现是正确的。尝试重新加载 maven 或清理缓存

【讨论】:

  • 仍然无法正常工作。我不明白。我又做了几个这样的项目,它们都奏效了。我不明白为什么这不起作用。
猜你喜欢
  • 2020-10-29
  • 2020-05-19
  • 2022-01-15
  • 1970-01-01
  • 2022-01-06
  • 2020-12-23
  • 2019-05-07
相关资源
最近更新 更多