我有带有2个提交按钮的Spring 4 MVC表单。我希望这些按钮指向两个不同的控制器。问题是一个表单应该有固定的动作参数集。 这是我的表格:
<form:form method="post" action="pageAction" commandName="id">
<button type="submit" class="btn btn-primary" name="addBasket">
Add Basket
</button>
<button type="submit" class="btn btn-danger" name="addProduct">
Add Product
</button>
</form:form>
这些按钮可能会到达两个不同的控制器吗?我将只发送ID,在addBasket中它将是basketId,在addProduct中它将是productId。这些是控制器:
@Controller
public class BasketController {
@RequestMapping(value = "/addBasket", method = RequestMethod.POST)
public ModelAndView addBasket(@ModelAttribute("id") Integer id) {
//method - addBasket(id);
}
}
@Controller
public class ProductController {
@RequestMapping(value = "/addProduct", method = RequestMethod.POST)
public ModelAndView addProduct(@ModelAttribute("id") Integer id) {
//method - addProduct(id);
}
}
答案 0 :(得分:0)
我不确定是否有您想要的解决方案,但另一种方法是在if
中使用/addItem
语句检查name
的值:
@Controller
public class ItemController {
@RequestMapping(value = "/addItem", method = RequestMethod.POST)
public ModelAndView addItem(@ModelAttribute("id") Integer id, @ModelAttribute("name") String name) {
if ("basket" == name) {
basketController.addBasket(id);
} else {
productController.addProduct(id);
}
}
}
答案 1 :(得分:0)
您可以在提交按钮上添加一个onclick事件,该事件将调用一个javascript函数,您可以根据需要决定/更改URL。
<button type="submit" class="btn btn-primary" name="addBasket" onClick="javascript:addBasket()">
<button type="submit" class="btn btn-primary" name="addProduct" onclick="javascript:addProduct()">
添加任意数量的javascript函数,例如:
function addBasket() {
var requestURL = '/addBasket';
var formData = $("#formName").serialize();
$.ajax({
type: 'POST',
data: formData,
url: requestURL,
success: function (data1) {
//do what is required after success
},
error: function (xhr) {
//in case of failure
}
});
}
答案 2 :(得分:0)
如果您使用的是html 5和兼容的浏览器,则可以根据需要使用按钮的表单和格式属性进行定位。详见w3schools