具有多个执行不同操作的提交按钮的表单

时间:2015-01-02 20:57:20

标签: forms spring-mvc

在将视图映射到控制器的操作并希望有人能指出我正确的方向时,我缺少一些基本的东西。我正在开发一个现有的项目,并且仍然熟悉语言及其配置方式。我有一个表单可以通过qaCase操作和resolveForm视图解析qaCase/resolve(问题回答案例)。下面是我所拥有的简化版本(如果我需要提供更多信息,请告诉我。)

QaCaseController

@RequestMapping(value="/resolve/{id}/**", method=RequestMethod.GET)
public String resolveForm(@PathVariable("id") Integer id, Model model) {
    QaCase qaCase = qaCaseDAO.findById(id);

    // Load the backing objects into the session
    model.addAttribute("qaCase", qaCase);       
    model.addAttribute("users", userDAO.findAll());
    model.addAttribute("exams", examDAO.findAll());

    return "qacases/resolve";
}

qaCase / resolve.jsp

resolve视图有一个接受文本输入和解析按钮的表单。

<sf:form method="POST" modelAttribute="qaCase" onsubmit="return isValid()">
    // some input fields
    <input type="submit" name="submitted"  value="resolve" />
</sf:form>

单击提交按钮时,将创建以下查询字符串

http://localhost:8080/qacases/resolve/<id>/<location>/<name>/<created by>

我想要做的是在现有表单中添加一个额外的输入字段和按钮,以便我可以选择添加注释而不是解决案例。

<sf:form method="POST" modelAttribute="qaCase" onsubmit="return isValid()">
    // some input fields
    <input type="submit" name="submitted"  value="resolve" />
</sf:form>
<sf:form method="POST" modelAttribute="qaCase" action="addComment">
    // optionally Add comment
    <input type="submit" name="submitted" value="addComment" />
</sf:form>

如果单击addComment,那么我希望创建查询字符串。

http://localhost:8080/qacases/addComment

相反,我得到以下具有400状态代码的查询字符串。

http://localhost:8080/qacases/resolve/<id>/<location>/<name>/<created by>/addComment

我一直在查看配置文件以查找映射的设置方式,但没有任何运气。不确定这是否是一个可以在没有人通过项目并确定如何配置的情况下回答的答案。感谢任何建议和/或答案。

1 个答案:

答案 0 :(得分:1)

当您使用action = "addComment" 而没有&#34; /&#34;之前&#34;在<form>中添加评论&#34; ,这意味着您要将表单发布到 current_url_that_invokes_view / addComment
如果将"/"添加到action = "/addComment",您将转到localhost:8080/addComment 所以如果你需要http://localhost:8080/qacases/addComment
键入action = "/qacases/addComment"并在 qacases 之前向"/"付费以指导根网址