Spring - 带有 2 个按钮的表单发送到 2 个不同的控制器
Spring - form with 2 buttons sending to 2 different controllers
我有 Spring 4 个带有 2 个提交按钮的 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);
}
}
我不确定是否有您想要的解决方案,但替代方法可能是在 /addItem
中使用 if
语句检查 name
:[=14 的值=]
@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);
}
}
}
您可以在提交按钮上添加一个 onclick 事件,它会调用一个 javascript 函数,其中您可以根据要求 decide/change 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
}
});
}
如果您使用的是html5及兼容的浏览器,您可以根据需要使用按钮的form和formaction属性来定位。在 w3schools
查看详情
我有 Spring 4 个带有 2 个提交按钮的 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);
}
}
我不确定是否有您想要的解决方案,但替代方法可能是在 /addItem
中使用 if
语句检查 name
:[=14 的值=]
@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);
}
}
}
您可以在提交按钮上添加一个 onclick 事件,它会调用一个 javascript 函数,其中您可以根据要求 decide/change 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
}
});
}
如果您使用的是html5及兼容的浏览器,您可以根据需要使用按钮的form和formaction属性来定位。在 w3schools
查看详情