У меня проблема с проектом Spring MVC. Я получаю «HTTP-статус 405 - метод запроса« POST »не поддерживается», когда я пытаюсь вызвать метод post в контроллере. Я не использую весеннюю безопасность. Возврат «index» - это базовый jsp и base на атрибуте «view», который изменит его вид. Кто-то может найти то, что я делаю неправильно?Spring MVC HTTP Status 405 - Метод запроса «POST» не поддерживается
Контроллер:
@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;
}
}
у меня есть объявил/прокат в web.xml <сервлет-отображение><имя сервлета> MVC-диспетчерская <имя сервлета />/прокат/* URL-шаблон> сервлет-отображение> В другие контроллеры работают нормально. Метод Get работает в RentController. –
cris135
Я изменил путь для запроса по почте: @RequestMapping (value = "create/post/{carId}", method = RequestMethod.POST), теперь я получаю ошибку 404 – cris135