我正在开发一个使用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
}
}
答案 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配置中定义正确的映射。