当前位置: 首页 > 面试题库 >

Spring 3-带有2个按钮的表单,向控制器方法发送2个参数

魏安宁
2023-03-14
问题内容

我有一个带有2个参数的Spring 3
MVC表单,我试图将其发送到控制器方法,但出现404错误。这个问题的转折点在于该表单具有2个提交按钮,并且单击的提交按钮决定了参数之一的值。这是我的表格。

    <form:form action="/approve/${bulletin.id}" method="post">
        <table>
            <tr>
                <td colspan="2"><b>From:</b> <c:out value="${bulletin.name}" /></td>
            </tr>
            <tr>
                <td colspan="2"><b>Subject:</b> <c:out
                        value="${bulletin.subject}" /></td>
            </tr>
            <tr>
                <td colspan="2"><b>Date:</b> <c:out value="${bulletin.date}" />
                    <br></td>
            </tr>
            <tr>
                <td colspan="2"><t:notePrint note="${bulletin.note}" /> <input
                    type="hidden" name="id" value="${bulletin.id}" /></td>
            </tr>
            <tr>
                <td><input type="submit" name="approve" value="Approve" /></td>
                <td><input type="submit" name="deny" value="Deny" /></td>
            </tr>
        </table>
        <br />
    </form:form>

这是我的控制器表格。

@RequestMapping(value = "/approve/{id}", method = RequestMethod.POST)
public String approveBulletin(@RequestParam int id,
        @RequestParam(required = false, value = "approve") String approve,
        @RequestParam(required = false, value = "deny") String deny, Model model) {
    try {
        if (approve.equalsIgnoreCase("approve")) {
            bulletinDAO.approveBulletin(id);
            model.addAttribute("approval",
                    "Your bulletin has been approved.");
        }
        if (deny.equalsIgnoreCase("deny")) {
            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 "ApproveBulletin";
}

问题答案:

我已经解决了自己的问题。我发布我的代码是为了让其他遇到相同问题的线程受益。这是我的表格。

<form:form action="approve" method="post">
    <table>
        <tr>
            <td colspan="2"><b>From:</b> <c:out value="${bulletin.name}" /></td>
        </tr>
        <tr>
            <td colspan="2"><b>Subject:</b> <c:out
                    value="${bulletin.subject}" /></td>
        </tr>
        <tr>
            <td colspan="2"><b>Date:</b> <c:out value="${bulletin.date}" />
                <br></td>
        </tr>
        <tr>
            <td colspan="2"><t:notePrint note="${bulletin.note}" /> <input
                type="hidden" name="id" value="${bulletin.id}" /></td>
        </tr>
        <tr>
            <td><input type="submit" name="approve" value="Approve" /></td>
            <td><input type="submit" name="deny" value="Deny" /></td>
        </tr>
    </table>
    <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 "ApproveBulletin";
}

@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 "ApproveBulletin";
}


 类似资料:
  • 问题内容: 我想从具有2个按钮的表单中将请求从一页发送到另一页: 如何改善此代码,甚至可以将其合并为一个函数? 问题答案: 鉴于处理程序之间唯一的逻辑差异是单击的按钮的值,您可以使用关键字引用引发事件的元素并从中获取事件。试试这个:

  • 问题内容: 这是我的方案: 我必须调用一个方法。假设参数为:Parameter1,Parameter2,..,..,Parameter N,但是要发送给该方法的参数在每种情况下都可能会更改。 情况1: 仅发送参数 1 情况2: 发送参数的组合 情况3: 发送所有参数 用Java实现此目标的最佳方法是什么? 问题答案: 解决方案取决于问题的答案-所有参数是否都将是同一类型,如果是,则每个参数将被视为

  • 问题内容: 我正在尝试在同一控制器中管理2个动作,一切正常!唯一的是doRender方法。我正在尝试对两个操作使用相同的渲染方法,如下所示: 但是显然这是行不通的。服务器日志显示的内容如下: 有什么帮助吗? 问题答案: 唯一的方法是定义多个方法。

  • 我想发一个带有改装2的帖子。url有一些参数: url如下所示 www.website.com/server/directory/location。type?arg1=value1&arg2=value2 我被要求使用POST请求。值(value1和value2)在运行时是动态的。我使用HttpClient用Xamarin开始了这个项目,现在我正在用Java原生语言重写它。在C#中,我所要做的就是

  • 问题内容: 我有HATEOAS(HAL) REST服务,并设法通过下面的代码与之交谈(使用怪异的转换引擎),但是当我尝试合并转换器(和)时,应用程序将始终选择第一个转换器,而不是当然,这会导致错误。 如何避免重复的改造,只是在小字体细节上有所不同? 同样,问题是 当您尝试像这样缩短上述时间时: 您会在该行得到一个例外: 线程“主”中的异常java.lang.ClassCastException:c

  • 问题内容: 我正在使用书签功能,其中用户单击jQueryui按钮并将某些信息发送到数据库。但是我没有使用表格,因为没有供用户输入的信息。 我正在从会话数据中提取用户ID,并正在发送URI段(URL的一部分) 使用codeigniter / php。 我试图找出要放在ajax / post函数的数据部分中的内容,因为没有表单/没有输入数据,以及如何处理控制器的“提交”部分。 控制者 模型 的HTML

  • 我有两个单选按钮,可以选择男性或女性。我的要求是,如果我点击单选按钮,我必须向服务器发送数字,如果我点击单选按钮,我必须向服务器发送数字(在服务器端,他们用这个数字进行检查。也就是说,如果他们收到1,那么它是男性,如果他们收到“2”,那么它是女性)。所以这里我必须检查我是否得到,如果响应是。我该怎么做?