Spring MVC 多请求映射,缺少请求参数

Spring MVC multiple requestmapping , missing requestparam

我需要通过一个 method.For 示例处理两个 @RequestMapping 值 /创建并创建/{id}

@RequestMapping(value = {"create","create/{id}"}, method = RequestMethod.GET)
public String create_form(@PathVariable(value = "id") Long id,Model model, @ModelAttribute("channelNode") ChannelNode channelNode,
        BindingResult result) {

      if(id>0){ //or if id exsist 

      //do something

      }

    return CHANNELNODE_ADD_VIEW;
}

但是当我 运行 简单 "create" url,没有任何参数时它不起作用 /

它显示了以下错误:

HTTP 状态 500 - 缺少类型为 Long

的方法参数的 URI 模板变量 'id'

输入状态报告

消息 Long 类型的方法参数缺少 URI 模板变量 'id'

说明服务器遇到内部错误,无法完成此请求。

不幸的是,您无法使用 @PathVariable 执行此操作。

您需要通过定义 2 个单独的处理程序方法来完成,

  1. 一个没有路径变量

     @RequestMapping(value = "create", method = RequestMethod.GET)
     public String create_form(Model model, @ModelAttribute("channelNode") ChannelNode channelNode,
        BindingResult result) {
    
        return CHANNELNODE_ADD_VIEW;
     }
    
  2. 一个有路径变量

    @RequestMapping(value = "create/{id}", method = RequestMethod.GET)
    public String create_form(@PathVariable(value = "id") Long id,Model model, @ModelAttribute("channelNode") ChannelNode channelNode,
        BindingResult result) {
    
        return CHANNELNODE_ADD_VIEW;
    }