Spring MVC多个请求映射,缺少requestparam

时间:2016-12-19 12:46:33

标签: java spring spring-mvc request-mapping

我需要通过一种方法处理两个@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;
}

但是当我运行简单的“创建”网址而没有任何参数/

时,它不起作用

它显示以下错误:

HTTP状态500 - 类型为Long

的方法参数缺少URI模板变量“id”

输入状态报告

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

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

1 个答案:

答案 0 :(得分:1)

很遗憾,您无法使用@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;
    }