我的地址如下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 ....)
{
...
}
答案 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