当前位置: 首页 > 知识库问答 >
问题:

Spring MVC HTTP状态405-不支持请求方法“POST”

司易安
2023-03-14

我对Spring MVC项目有问题,当我尝试在控制器中调用post方法时,我得到“HTTP状态405-请求方法'POST'不支持”。我没有使用Spring安全。返回“index”是base jsp,并基于“view”属性更改视图。有人能找到我做错了什么?

控制器:

@Controller
@RequestMapping(value = "rent")
public class RentController {

@Autowired
CarBean carBean;

@RequestMapping(value = "create/{carId}", method = RequestMethod.POST)
public String makeRentPost(@ModelAttribute("makeRent") @Valid RentForm rent, @PathVariable("carId") Long carId, BindingResult result, ModelMap model) {
    if (!result.hasErrors()) {
        model.addAttribute("makeRent", new RentForm());
        model.addAttribute("view", ViewEnums.MAKERENT.toString());
    } else {
        model.addAttribute("view", ViewEnums.MAIN.toString());
    }
    return "index";
}


@RequestMapping(value = "create/{carId}", method = RequestMethod.GET)
public String makeRent(@PathVariable("carId") Long carId, ModelMap modelMap) {
    modelMap.addAttribute("makeRent", new RentForm());
    modelMap.addAttribute("car", carBean.get(carId));
    modelMap.addAttribute("view", ViewEnums.MAKERENT.toString());
    return "index";
}
}

JSP:

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
 <%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
<div id="featured" class="container">
        <div id="box1">
            <img src="${car.photoURL}" alt="" height="220" width="300"/>

            <h2 class="subtitle">${car.brand} ${car.model}</h2>
            <ul>
                <li><b><s:message code="car.year"/> </b>${car.year}</li>
                <li><b><s:message code="car.engineCapacity"/> </b>${car.engineCapacity}</li>
                <li><b><s:message code="car.doorsNumber"/> </b>${car.doorsNumber}</li>
                <li><b><s:message code="car.color"/> </b>${car.color}</li>
                <li><b><s:message code="car.passengersNumber"/> </b>${car.passengersNumber}</li>
                <li><b><s:message code="car.segment"/> </b>${car.segment}</li>
                <li><b><s:message code="car.gearbox"/> </b>${car.gearbox}</li>
                <li><b><s:message code="car.engine"/> </b>${car.engine}</li>
            </ul>
        </div>
</div>

<form:form action="${pageContext.request.contextPath}/rental/rent/create/${car.id}" method="POST" commandName="makeRent">
    <ul style="list-style-type:none">
        <li><s:message code="rent.startDate"/> <form:input path="startDate" id="date-pick-start" /> <form:errors path="startDate"/></li>
        <li><s:message code="rent.endDate"/> <form:input path="endDate" id="date-pick-end" /> <form:errors path="endDate"/></li>
        <li><input type="submit" value="Dodaj"/></li>
    </ul>
</form:form>

窗体对象:

public class RentForm {

@NotBlank
private String startDate;
@NotBlank
private String endDate;

public String getStartDate() {
    return startDate;
}

public void setStartDate(String startDate) {
    this.startDate = startDate;
}

public String getEndDate() {
    return endDate;
}

public void setEndDate(String endDate) {
    this.endDate = endDate;
}
}

共有1个答案

曾修真
2023-03-14

表单映射与表单操作不一致,表单操作是

${pageContext.request.contextPath}/rental/rent/create/${car.id}

你的类级映射是rent,方法级映射是create,所以在请求中只能在它前面的是context路径,但是你有pageContext.request.contextPath}/rent

您可能已经加倍了您的上下文(硬编码)和通过变量,因此您的请求被一些仅接受GET请求的映射捕获

 类似资料:
  • 我有以下控制器: 13-feb-2016 16:55:09.442警告[http-apr-8080-exec-9]org.springframework.web.servlet.PageNotFound.HandleHttpRequestMethodNotSupported请求方法“Put”不受支持 我不明白这怎么可能。下面是我的依赖项: 编辑2: 2016-02-14 12:30:56 DEBU

  • 我在这里检查了这么多相同的答案,但似乎没有什么适合我。我有Spring mvc的Spring Security性。当我的用户尝试注册时,我正在向我的控制器发送帖子数据。但它给我405帖子不支持我在安全配置中禁用了csrf令牌。请让我知道我哪里出错了?这是我的webSecurityCon 这是我的注册页面 这是我的主控制器 这是我的签名信息。

  • 问题内容: 我收到此错误: 我正在尝试做的是创建一个带有下拉框的表单,该表单会根据在另一个下拉框中选择的其他值进行填充。例如,当我在框中选择一个名称时,应运行.jsp页面中的函数,然后提交提交的页面,然后在框中再次加载相应的值。 但是我收到此HTTP状态405错误。我在互联网上搜索了解决方案,但找不到任何有帮助的方法。这是我的代码的相关部分: jsp页面的一部分 控制器的一部分: 我怎么会得到这个

  • 我收到这个错误:< code>HTTP状态405 -不支持请求方法“POST ” 我想做的是创建一个带有下拉框的表单,该下拉框根据在另一个下拉框中选择的其他值进行填充。例如,当我在框中选择一个名称时,应该运行. jsp页面中的函数,然后提交的页面再次加载框中的相应值。 但是我收到此HTTP状态405错误。我已经在互联网上搜索了解决方案,但找不到任何有帮助的东西。以下是我的代码的相关部分: jsp页

  • 我有Spring MVC的Spring Security。当我尝试注册时,它给了我405个不支持的“帖子”。我已在安全配置中禁用csrf令牌。让我知道我哪里出错了? 我的登录页面: 授权由LoginController处理: 这是我的Spring Security配置类:

  • 当我尝试实现Spring Security性时,出现以下错误- 控制器: web.xml Spring-security.xml 登录名。jsp 错误:- http://localhost:8080/EmployeeManagement/j_spring_security_check