我有以下Spring 3.2表单。它有两个按钮,我想根据点击的按钮执行不同的操作。
<form:form action="approve" method="post">
<%
List<Bulletin> bulletins = (List<Bulletin>) request.getAttribute("bulletins");
for (Bulletin bulletin : bulletins) {
bulletin.setNote(bulletin.getNote().replace("\n\n", "\n "));
String[] bulletinArray = bulletin.getNote().split("\n");
out.println("<b>Name:</b> " + bulletin.getName() + "<br>");
out.println("<b>Date:</b> " + bulletin.getDate() + "<br>");
out.print("<b>Comment:</b> ");
for (int i = 0; i < bulletinArray.length; i++) {
if (i == bulletinArray.length - 1) {
out.println(bulletinArray[i]);
} else {
out.println(bulletinArray[i] + "<br />");
}
}
out.println("<br><br>");
}
%>
<td><input type="submit" name="approve" value="Approve" /></td>
<td><input type="submit" name="deny" value="Deny" /></td>
<br />
</form:form>
我的控制器中有以下方法。
@RequestMapping(value = "/approve", method = RequestMethod.POST, params = { "approve" })
public String approve(@RequestParam int id, @RequestParam String approve, Model model) {
try {
bulletinDAO.approveBulletin(id);
model.addAttribute("approval", "Your bulletin has been approved.");
List<Bulletin> bulletins = bulletinDAO.getApprovedBulletins();
model.addAttribute("bulletins", bulletins);
} catch (Exception e) {
System.out.println(e.getMessage());
return "FailurePage";
}
return "redirect:/waitingBulletins";
}
@RequestMapping(value = "/approve", method = RequestMethod.POST, params = { "deny" })
public String deny(@RequestParam int id, @RequestParam String deny, Model model) {
try {
bulletinDAO.denyBulletin(id);
model.addAttribute("approval", "Your bulletin has been denied.");
List<Bulletin> bulletins = bulletinDAO.getApprovedBulletins();
model.addAttribute("bulletins", bulletins);
} catch (Exception e) {
System.out.println(e.getMessage());
return "FailurePage";
}
return "redirect:/waitingBulletins";
}
无论我点击哪个按钮,都会收到HTTP Status 400错误,其描述为“客户端发送的请求在语法上不正确”。如您所见,每个方法都有一个int类型的参数。在我看来问题是我没有在我的JSP中的表单中考虑该方法,但我不清楚如何做到这一点。有人可以帮忙吗?
答案 0 :(得分:0)
我不知道@RequestParam应该来自哪里。我想是的 这个问题的关键。
是的,绝对的。 @RequestParam
javadoc状态
注释,指示应将方法参数绑定到Web请求参数。
如果您没有合适的请求参数,则无法执行此操作。在您的情况下,您似乎没有
的请求参数@RequestParam int id
,因为您向id
提供了value
属性,因此请求参数的名称将为@RequestParam
。您需要提供这样的请求参数,可能带有<input>
元素。