检查点击了哪个提交按钮

dab*_*aba 0 forms model-view-controller spring spring-roo jakarta-ee

我正在开发一个使用 J2EE 和 Spring Roo 作为框架的 Web 应用程序。

我想创建一个带有两个提交按钮的表单:

  • 一个用于保存并继续
  • 另一个用于保存和完成

    <form action="mycontroller" method="post"> <input type="submit" value="Save and continue"/> <input type="submit" value="Save and finish"/> </form>

所以我可以选择将数据存储在数据库中并添加更多条目,或者存储数据并完成该过程。

如何检查在处理操作的控制器的方法中单击了什么提交按钮?

public class MyController {
    void actionMethod(...) {
        // check which submit was clicked
    }
}
Run Code Online (Sandbox Code Playgroud)

Gen*_*tto 6

您应该为两个按钮添加一个名称字段:

<input type="submit" name="button" value="Save and continue"/>
<input type="submit" name="button" value="Save and finish"/>
Run Code Online (Sandbox Code Playgroud)

进入控制器后,您可以通过此名称字段恢复元素并检查其值字段:

String field = request.getParameter("button");

if ("Save and continue".equals(button)){
    // Do stuff
}
else if ("Save and finish".equals(button)){
    // Do a different stuff
}
else {
    // None of them were pressed
}
Run Code Online (Sandbox Code Playgroud)

或者,您也可以为两个按钮使用不同的名称值:

<input type="submit" name="button1" value="Save and continue"/>
<input type="submit" name="button2" value="Save and finish"/>
Run Code Online (Sandbox Code Playgroud)

在您的控制器中:

String button1 = request.getParameter("button1");
String button2 = request.getParameter("button2");

if (button1 != null){
    // Do stuff
}
else if (button2 != null){
    // Do a different stuff
}
else {
    // None of them were pressed
}
Run Code Online (Sandbox Code Playgroud)

首选第二种解决方案,因为它不依赖于元素的值