【问题标题】:Spring MVC request mapping based on url parametersSpring MVC基于url参数的请求映射
【发布时间】:2016-01-04 00:27:23
【问题描述】:

要求是编写一个控制器来处理来自以下 url 的 POST 请求:

http://hostname:port/com/prod1?id=2&action=add
http://hostname:port/com/prod1?id=2&action=minus

http://hostname:port/com/prod2?id=2&action=add
http://hostname:port/com/prod2?id=2&action=minus

我可以有两种方法,一种用于映射带有 action=add 的 url,另一种用于映射带有 action=minus 的 url?所有的请求都是 POST。

【问题讨论】:

    标签: java spring spring-mvc model-view-controller


    【解决方案1】:

    问题和答案之间有几年的时间,但是是的可以使用 Spring MVC 基于查询参数进行路由:

    @RequestMapping(path = "/com/{product}", params = "add")
    String add(@PathVariable("product") String product) {
        System.out.println("add method; product=" + product);
        return "add";
    }
    
    @RequestMapping(path = "/com/{product}", params = "minus")
    String minus(@PathVariable("product") String product) {
        System.out.println("minus method; product=" + product);
        return "minus";
    }
    

    【讨论】:

      【解决方案2】:

      No 据我所知。根据您的 url 端点,

      他们是,

      1. /com/prod1
      2. /com/prod2

      对于这些,您可以为每个控制器设置 2 个控制器方法。

      编辑:

      如果我理解正确的话,

      不用上面的端点,写2个控制器方法用于请求映射,

      1. com/add
      2. com/减号

      如果你想以更细化的方式拥有它,那么

      1. com/prod1/add
      2. com/prod1/minus
      3. com/prod2/add
      4. com/prod2/minus

      为上述编写请求映射方法。

      那么你有,

      http://hostname:port/com/prod1/add?id=2 http://hostname:port/com/prod1/minus?id=2

      http://hostname:port/com/prod2/add?id=2 http://hostname:port/com/prod2/munus?id=2

      或者您可以使用其他方法。也就是说,只需使用通用端点并根据您的请求参数,重定向到不同的请求映射,例如,

      1. com/add
      2. com/减号

      【讨论】:

      • 我希望它基于操作(action=add 或 action=minus),而不是基于 prod1 或 prod2。
      • @PraveeshP 如果您需要更多帮助,请告诉我
      【解决方案3】:

      您不能有两个 @RequestMapping 方法来映射到两个仅通过查询参数不同的 URL。 @RequestMapping 只绑定到 URL 的路径部分。

      如果您对 action 值进行调度,您可以有两种方法,一种是为add 调用一种方法,另一种是为minus 调用。

      或者,您可以将 addminus 作为 URL 路径的一部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多