如何在Spring MVC的同一@RequestMapping中为参数映射不同的值?
问题内容:
假设我有:
@RequestMapping(params = "action=nuovoprodotto")
public ModelAndView nuovoProdotto(
@RequestParam(value = "page", required = false, defaultValue = "-1") int page,
@RequestParam(value = "action") String action,
@ModelAttribute Prodotto prod, HttpSession session)
throws Exception {
是否可以将此请求映射为“ action”参数的两个或三个值?
我尝试了很多方法
@RequestMapping(params = "action=nuovoprodotto, action=salvaprodotto")
要么
@RequestMapping(params = "action=nuovoprodotto|salvaprodotto")
但是它们不起作用…如果我不能解决方案,那么边为每个参数值组合编写处理程序吗?
问题答案:
尝试这个:
@RequestMapping(params = {"action=nuovoprodotto","action=salvaprodotto"})
该params
属性实际上是type String[]
,但是注释使您可以String
代替单个元素编写一个String[]
,因此这两个是等效的:
@RequestMapping(params = {"action=nuovoprodotto"})
和
@RequestMapping(params = "action=nuovoprodotto")
参考:
更新:不好,您可以在“
高级@RequestMapping选项
”部分中阅读,多个参数使用和而不是or进行组合,因此它无法按上面指定的方式工作。
因此,我想说的是您要做的是创建一个具有几乎相同签名的别名方法:
@RequestMapping(params = "action=nuovoprodotto")
public ModelAndView nuovoProdotto(
@RequestParam(value = "page", required = false, defaultValue = "-1") int page,
@RequestParam(value = "action") String action,
@ModelAttribute Prodotto prod, HttpSession session)
throws Exception {
// some stuff here
}
@RequestMapping(params = "action=salvaprodotto")
public ModelAndView salvaProdotto(
@RequestParam(value = "page", required = false, defaultValue = "-1") int page,
@RequestParam(value = "action") String action,
@ModelAttribute Prodotto prod, HttpSession session)
throws Exception {
return nuovoProdotto(page, action, prod, session);
}