2015-10-06 162 views
0

要求是寫一個控制器來處理從以下網址的POST請求:基於URL Spring MVC的請求映射參數

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 

我可以有兩種方法,一種用於動作映射的URL =添加和另一對於動作=減號的網址?所有的請求都是POST。據我所知,

回答

1

No。根據您的網址終點,

他們,

  1. /COM/PROD1
  2. /COM/Prod2的

對於這些,你可以有2種爲每個這些控制器方法。

編輯:

如果我理解正確,

代替具有上述端點,寫2種請求映射控制器方法,

  1. COM /添加
  2. COM /減去

如果你想要在一個更加粒狀曼恩呃,然後

  1. COM/PROD1 /加
  2. COM/PROD1 /減
  3. COM/Prod2的/加
  4. COM/Prod2的/負

寫請求映射方法以上。

然後你有,

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 /加
  2. COM /減
+0

我想它的基礎上的行動(ACTION =添加或行動=減),不基於prod1或prod2。 –

+0

@PraveeshP讓我知道你是否需要任何幫助 –

1

你不能有兩個@RequestMapping映射到僅由查詢參數不同的兩個URL的方法。 @RequestMapping僅綁定到URL的路徑部分。

如果您在action值上調度,您可以有兩種方法,調用add的一種方法和minus的另一種方法。

或者,您可以將addminus作爲URL路徑的一部分。

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"; 
}