如何在RequestMapping中使用可选值

时间:2015-04-21 02:58:21

标签: spring spring-mvc

我的地址如下www.example.com/myaction,我需要让我当前的方法接受一个可选值,如下所示:

www.example.com/myaction/1010
www.example.com/myaction/3493

我使用以下方法接受可选值,但它不起作用。

@RequestMapping(value="/myaction", method=RequestMethod.POST)
public String myForm(@RequestParam(required=false) String id,@ModelAttribute ....)
{
  ...
}

2 个答案:

答案 0 :(得分:2)

最简单的方法是注册两个映射,

@RequestMapping(value="/myaction/{id}", method=RequestMethod.POST)
public String myForm(@PathVariable String id,@ModelAttribute ....) {... }

@RequestMapping(value="/myaction", method=RequestMethod.POST)
public String myForm2(@ModelAttribute ....) {... }

另一种方法是编写自定义路径匹配器,例如this blog post,但是IMO,不需要这样,因为您没有太多变化。 另请注意@ Braj的评论,您可以使用正则表达式使您的映射仅接受数字/myaction/{id:\d+}

答案 1 :(得分:0)

您是否尝试过此选项。其中id是将作为参数值的值。

  

@RequestMapping(value =“/ myaction / {id}”,method = RequestMethod.POST)

     

public String myForm(@PathVariable String id,@ ModelAttribute ....)   {...}

这是一个例子,link