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

我收到此错误: HTTP Status 405 - Request method 'POST' not supported

我正在尝试做的是创建一个带有下拉框的表单,该表单会根据在另一个下拉框中选择的其他值进行填充。例如,当我在customerName框中选择一个名称时,onChange应运行.jsp页面中的函数,然后提交提交的页面,然后在customerCountry框中再次加载相应的值。

但是我收到此HTTP状态405错误。我在互联网上搜索了解决方案,但找不到任何有帮助的方法。这是我的代码的相关部分:

jsp页面的一部分

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

<style>

.error { color: red; }

</style>

<script>

function repopulate(){

document.deliveryForm.submit();

}

function setFalse(){

document.getElementById("hasId").value ="false";

document.deliveryForm.submit();

// document.submitForm.submit(); (This was causing the error)

}

</script>

</head>

<body>

<h1>Create New Delivery</h1>

<c:url var="saveUrl" value="/test/delivery/add" />

<form:form modelAttribute="deliveryDtoAttribute" method="POST" action="${saveUrl}" name="deliveryForm">

<table>

<tr>

<td><form:hidden id="hasId" path="hasCustomerName" value="true"/></td>

</tr>

<tr>

<td>Customer Name</td>

<td><form:select path="customerName" onChange="repopulate()">

<form:option value="" label="--- Select ---" />

<form:options items="${customerNameList}" />

</form:select>

</td>

<td><form:errors path="customerName" cssClass="error" /></td>

</tr>

<tr>

<td>Customer Country</td>

<td><form:select path="customerCountry">

<form:option value="" label="--- Select ---" />

<form:options items="${customerCountryList}" />

</form:select>

</td>

<td><form:errors path="customerCountry" cssClass="error" /></td>

</tr>

</form:form>

<form:form name="submitForm">

<input type="button" value="Save" onClick="setFalse()"/>

</form:form>

</body>

</html>

控制器的一部分:

@RequestMapping(value = "/add", method = RequestMethod.GET)

public String getDelivery(ModelMap model) {

DeliveryDto deliveryDto = new DeliveryDto();

model.addAttribute("deliveryDtoAttribute", deliveryDto);

model.addAttribute("customerNameList",

customerService.listAllCustomerNames());

model.addAttribute("customerCountryList", customerService

.listAllCustomerCountries(deliveryDto.getCustomerName()));

return "new-delivery";

}

// I want to enter this method if hasId=true which means that a value in the CustomerName

// drop down list was selected. This should set the CountryList to the corresponding values

// from the database. I want this post method to be triggered by the onChange in the jsp page

@RequestMapping(value = "/add", method = RequestMethod.POST, params="hasCustomerName=true")

public String postDelivery(

@ModelAttribute("deliveryDtoAttribute") DeliveryDto deliveryDto,

BindingResult result, ModelMap model) {

model.addAttribute("deliveryDtoAttribute", deliveryDto);

model.addAttribute("customerNameList",

customerService.listAllCustomerNames());

model.addAttribute("customerCountryList", customerService

.listAllCustomerCountries(deliveryDto.getCustomerName()));

return "new-delivery";

}

// This next post method should only be entered if the save button is hit in the jsp page

@RequestMapping(value = "/add", method = RequestMethod.POST, params="hasCustomerName=false")

public String postDelivery2(

@ModelAttribute("deliveryDtoAttribute") @Valid DeliveryDto deliveryDto,

BindingResult result, ModelMap model) {

if (result.hasErrors()) {

model.addAttribute("deliveryDtoAttribute", deliveryDto);

model.addAttribute("customerNameList",

customerService.listAllCustomerNames());

model.addAttribute("customerCountryList", customerService

.listAllCustomerCountries(deliveryDto.getCustomerName()));

return "new-delivery";

} else {

Delivery delivery = new Delivery();

//Setters to set delivery values

return "redirect:/mis/home";

}

}

我怎么会得到这个错误?任何帮助将非常感激!谢谢

更改hasIdhasCustomerName。我仍然收到HTTP Status 405 - Request method

'POST' not supported错误。

注释掉setFalse导致错误的函数中的行

// D

回答:

我发现了导致HTTP错误的问题。

在“ setFalse()保存”按钮触发的函数中,我的代码试图提交包含该按钮的表单。

        function setFalse(){

document.getElementById("hasId").value ="false";

document.deliveryForm.submit();

document.submitForm.submit();

当我删除document.submitForm.submit();它的作品:

        function setFalse(){

document.getElementById("hasId").value ="false";

document.deliveryForm.submit()

@RogerLindsjö感谢您发现我没有传递正确参数的错误!

以上是 HTTP状态405-不支持请求方法“ POST”(Spring MVC) 的全部内容, 来源链接: utcz.com/qa/400016.html

回到顶部