【问题标题】:Spring MVC multiple requestmapping , missing requestparamSpring MVC 多个请求映射,缺少请求参数
【发布时间】:2016-12-19 12:46:32
【问题描述】:

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

描述服务器遇到了一个内部错误,导致它无法完成这个请求。

【问题讨论】:

标签: java spring spring-mvc request-mapping


【解决方案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;
    }
    

【讨论】:

  • 谢谢亲爱的,我已经知道这种方式了。但我正在寻找一种方法来处理这两种方法:/也许我不知道这是不可能的:/
  • 那么你需要使用@RequestParam 并在查询字符串中发送id
猜你喜欢
  • 1970-01-01
  • 2016-01-04
  • 1970-01-01
  • 2019-08-05
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多