【发布时间】:2023-03-06 05:27:02
【问题描述】:
我有以下 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 状态 400 错误,描述为“客户端发送的请求在语法上不正确”。如您所见,每个方法都有一个 int 类型的参数。在我看来,问题在于我没有在我的 JSP 中以表格的形式说明该方法,但我不清楚如何做到这一点。有人可以帮忙吗?
【问题讨论】:
-
让我们看看表格的其余部分,如果有的话。
-
id的@RequestParam应该从哪里来? -
另外,您可以将记录器级别设置为 DEBUG 以从 Spring 获取更多信息。
-
我已经添加了表格的其余部分。我不知道 @RequestParam 应该来自哪里。我认为这是问题的症结所在。
标签: java spring-mvc model-view-controller spring-3