检查单击了哪个提交按钮

时间:2014-05-26 10:01:16

标签: forms spring java-ee model-view-controller spring-roo

我正在开发一个使用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
    }
}

2 个答案:

答案 0 :(得分:3)

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

<input type="submit" name="button" value="Save and continue"/>
<input type="submit" name="button" value="Save and finish"/>

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

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
}

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

<input type="submit" name="button1" value="Save and continue"/>
<input type="submit" name="button2" value="Save and finish"/>

在您的控制器中:

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
}

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

答案 1 :(得分:1)

如果可以减少if-else,并从Spring框架中受益以处理这些映射,请尝试以下解决方案(如果您没有在表单中发送许多元参数)

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

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

...

public class CartListController {
    void AddToCartListController(...) {
        // business code
    }
    void CommitCartListController(...) {
        // business code
    }
}

// ... or ...

public class AddToCartListController {
    void actionMethod(...) {
       // business code        
    }
}

public class CommitCartListController {
    void actionMethod(...) {
       // business code
    }
}

并在Spring配置中定义正确的映射。