HTML 5 输入类型提交不会作为参数传递给控制器

Posted

技术标签:

【中文标题】HTML 5 输入类型提交不会作为参数传递给控制器【英文标题】:HTML 5 input type submit does not get passed as a parameter to the controller 【发布时间】:2012-01-02 14:33:39 【问题描述】:

我有一个带有两个提交按钮的表单,用于指定 html 5 中的特定操作值。

我想获取 action1 或 action2 的值(以提交者为准)。

<input type="submit" name="action2" value="action1"/>
<input type="submit" name="action1" value="action2"/>

服务器端:

ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors)
String act1 = request.getParameter("action1");
String act2 = request.getParameter("action2");

act1 和act 2 均为空。而且我调试的时候multipartParameters.keySet不包含action1和action2。这在 HTML 4 中不是问题。在 html 5 中有没有新的方法可以做到这一点?除了使用隐藏字段..

【问题讨论】:

HTML5 在这里没有改变任何东西。请向我们展示提交按钮的 HTML。 【参考方案1】:

使用formaction标签来指定点击提交时发送的url(覆盖表单的action属性)

如果您使用的是 spring 3 mvc(注释),则将每个操作请求 url 映射到一个方法

如果你使用的是 spring 2 mvc (xml)

    将调度程序中的 URL 指定到控制器 使用request.getRequestURI然后解析url来判断动作

【讨论】:

以上是关于HTML 5 输入类型提交不会作为参数传递给控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何通过不提交当前会话事务将 DataTable 作为参数传递给存储过程?

如何将从表单提交中检索到的参数作为参数传递给 django 中的函数

将参数传递给 symfony 5.4 表单测试不起作用

将枚举类型作为参数传递给 GraphQL 查询 - Quarkus

将对象类型作为参数传递给方法?

如何将两种形式作为参数传递给 laravel 控制器?