Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带2个按钮的Spring 3.2表单--请求语法不正确_Java_Spring Mvc_Model View Controller_Spring 3 - Fatal编程技术网

Java 带2个按钮的Spring 3.2表单--请求语法不正确

Java 带2个按钮的Spring 3.2表单--请求语法不正确,java,spring-mvc,model-view-controller,spring-3,Java,Spring Mvc,Model View Controller,Spring 3,我有下面的Spring 3.2表单。它有两个按钮,我想根据单击的按钮执行不同的操作 <form:form action="approve" method="post"> <% List<Bulletin> bulletins = (List<Bulletin>) request.getAttribute("bulletins"); for (Bulletin bulletin : bulletins) {

我有下面的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";
}
@RequestMapping(value=“/approve”,method=RequestMethod.POST,params={“approve”})
公共字符串批准(@RequestParam int-id、@RequestParam-String-approve、Model){
试一试{
公告批准公告(id);
model.addAttribute(“批准”,“您的公告已批准”);
List bulletins=bulletinDAO.getApprovedBulletins();
model.addAttribute(“公告”,公告);
}捕获(例外e){
System.out.println(e.getMessage());
返回“FailurePage”;
}
返回“重定向:/waitingBulletins”;
}
@RequestMapping(value=“/approve”,method=RequestMethod.POST,params={“deny”})
公共字符串拒绝(@RequestParam int-id,@RequestParam-String-deny,Model){
试一试{
丹巴列汀公报(id);
model.addAttribute(“批准”,“您的公告已被拒绝”);
List bulletins=bulletinDAO.getApprovedBulletins();
model.addAttribute(“公告”,公告);
}捕获(例外e){
System.out.println(e.getMessage());
返回“FailurePage”;
}
返回“重定向:/waitingBulletins”;
}
无论单击哪个按钮,我都会得到一个HTTP Status 400错误,其描述为“客户端发送的请求在语法上不正确”。正如您所看到的,每个方法都有一个int类型的参数。在我看来,问题在于我没有在JSP的表单中说明该方法,但我不清楚如何做到这一点。有人能帮忙吗

我不知道@RequestParam应该来自哪里。我想那是 问题的关键

是的,绝对是。javadoc声明

注释,指示方法参数应绑定到web请求参数

如果您没有合适的请求参数,它就不能这样做。在您的情况下,似乎没有请求参数

@RequestParam int id

其中,请求参数的名称将为
id
,因为您已向
@RequestParam
提供了
属性。您需要提供这样一个请求参数,可能带有
元素。

让我们看看表单的其余部分,如果有的话。
id
@RequestParam
应该从哪里来?另外,您可以将记录器级别设置为DEBUG,以从Spring获得更多信息。我已经添加了表单的其余部分。我不知道@RequestParam应该来自哪里。我想这是问题的症结所在。谢谢你的帮助。我在表格中添加了这一行,解决了这个问题:
@Frank不客气。请注意,
@RequestParam
有一个
required
属性,您可以将该属性设置为
false