2015-02-09 3 views
1

У меня проблема с проектом 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; 
} 
} 

ответ

1

Ваше отображение форма не совпадает с формой действия, форма действия

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

ваше отображение уровня класса rent отображение уровня метод create поэтому единственное, что может предшествовать его в запросе это путь к контексту, но у вас есть ${pageContext.request.contextPath}/rental

вы, вероятно, в два раза ваш контекст (как жестко) и с помощью переменной, поэтому ваш запрос попасться некоторым отображением принимать только получать запросы

+0

у меня есть объявил/прокат в web.xml <сервлет-отображение><имя сервлета> MVC-диспетчерская <имя сервлета /> /прокат/* В другие контроллеры работают нормально. Метод Get работает в RentController. – cris135

+0

Я изменил путь для запроса по почте: @RequestMapping (value = "create/post/{carId}", method = RequestMethod.POST), теперь я получаю ошибку 404 – cris135