浏览论坛,但没有找到解决办法,可以解决我的问题。有2页: index.jsp --起始页,包括要填充的表单和结果列表;edit.jsp允许从index.jsp提供的结果列表中编辑任意行的数据。当我填写所有成功提交的数据时,当我尝试编辑结果列表中的任何行时,我重定向到edit.jsp,但是如果我提交了更改,就会抛出一个异常:HTTPSTAT405-RequestMethod 'POST‘不支持。我想知道如何处理这个问题。
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@taglib prefix="s" uri="http://www.springframework.org/tags" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title></title>
</head>
<body>
<form:form method="post" action="add" modelAttribute="account">
<table>
<tr>
<td><form:label path="number">Number</form:label></td>
<td><form:input path="number"/></td>
</tr>
<tr>
<td><form:label path="amount">Amount</form:label></td>
<td><form:input path="amount"/></td>
</tr>
<tr>
<td><form:label path="currency">Currency</form:label></td>
<td><form:input path="currency"/></td>
</tr>
<tr>
<td><form:label path="date">Date</form:label></td>
<td><form:input path="date" type="date"/>
</tr>
</table>
<input type="submit" value="Submit"/>
</form:form>
<table>
<tr border="1">
<td>Number</td>
<td>Amount</td>
<td>Currency</td>
<td>Date</td>
</tr>
<c:forEach items="${listOfAccounts}" var="items">
<tr border="1">
<td>${items.number}</td>
<td>${items.amount}</td>
<td>${items.currency}</td>
<td>${items.date}</td>
<td><a href="<c:url value='edit/${items.id}'/>">edit</a></td>
</tr>
</c:forEach>
</body>
</html>
edit.jsp
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Edit Account</title>
</head>
<body>
<form:form modelAttribute="account" method="post" action="edited">
<form:hidden path="id" value="${account.id}"></form:hidden>
<form:label path="number">Number</form:label>
<form:input path="number" value="${account.number}"/><br>
<form:label path="amount">Amount</form:label>
<form:input path="amount" value="${account.amount}"/><br>
<form:label path="currency">Currency</form:label>
<form:input path="currency" value="${account.currency}"/><br>
<form:label path="date">Date</form:label>
<form:input path="date" type="date" value="${account.date}"/>
<input type="submit" value="Submit"/>
</form:form>
</body>
</html>
Controller.java
@Controller
public class AccountController {
@Autowired
private AccountService accountService;
private Account account;
@RequestMapping(value="/", method = RequestMethod.GET)
public String welcomeMethod(ModelMap map) {
Account account = new Account();
map.addAttribute("account", account);
map.addAttribute("listOfAccounts", accountService.getListOfAccounts());
return "index";
}
@RequestMapping(value="add", method = RequestMethod.POST)
public String addAccount(@ModelAttribute(value="account") Account account, ModelMap map) {
accountService.addAccount(account);
map.addAttribute("listOfAccounts", accountService.getListOfAccounts());
return "index";
}
@RequestMapping(value="edit/{id}", method = RequestMethod.GET)
public String editAccount(@PathVariable("id") int id, ModelMap model) {
Account account = accountService.getAccountById(id);
model.addAttribute("account", account);
return "edit";
}
@RequestMapping(value="edited", method = RequestMethod.POST)
public String updateAccount(@ModelAttribute(value="account") Account account, ModelMap map) {
accountService.updateAccount(account);
map.addAttribute("listOfAccounts", accountService.getListOfAccounts());
return "index";
}
}
发布于 2014-11-28 22:39:15
您的问题是在表单中使用相对映射,当您单击“编辑”时,您的URL变成/edit/{someid}
,而您的edit.jsp表单被加载。当您编辑数据并单击submit时,您的URL将变成/edit/{someid}/edited
,映射将匹配使用GET方法的/edit/{someid}
处理程序方法,这就是您获得错误的原因。
要解决这个问题,在edit.jsp简单中向操作添加反斜杠,action="/edited"
希望它能帮上忙
https://stackoverflow.com/questions/27195925
复制相似问题