2011-05-10 83 views
9

這類似於this question,但我仍然感到困惑我的情況。我想這螞蟻式的模式映射到控制器的方法:使用Spring的使用通配符@RequestMapping

/results/** 

也就是說,我要像www.hostname.com/MyServlet/results/123/abc/456/def/任何URL去這個方法。我有:

<servlet-mapping> 
    <servlet-name>MyServlet</servlet-name> 
    <url-pattern>/results/*</url-pattern> 
</servlet-mapping> 

和:

@RequestMapping(value="/**", method=RequestMethod.GET) 
public ModelAndView handleRequest() {...} 

這工作指導要求我的方法,但使我幾個問題:

  1. 如果我再添servlet映射,像<url-pattern>/another-mapping/*</url-pattern> ???它也將映射到該方法!我怎樣才能將兩者分開?
  2. 爲什麼URL模式/results/*工作,而/results/**不?根據螞蟻路徑樣式,**裝置包括嵌套/字符,而*停止在下一個/。因此,它只應成功映射一個URL,如/results/123,bot NOT /results/123/abc/。對?
+0

剛剛開始了這個賞金。看看我在第一個答案中的評論... – 2011-06-27 02:40:57

回答

5

如果我再添servlet映射,如/其他映射/ * ???它也將映射到該方法!我怎樣才能將兩者分開?

根據您當前的配置,你不能。如果你想映射DispatcherServlet到多個URL模式以及它們之間的區別,你可以用alwaysUseFullPath = "true"聲明DefaultAnnotationHandlerMapping,並使用完整路徑@RequestMapping

或者,您也可以映射DispatcherServlet<url-pattern>/*</url-pattern>和使用@RequestMapping完整路徑,而無需重新配置DefaultAnnotationHandlerMapping。雖然在這種情況下,您需要configre exclusions for static content

爲什麼url-pattern/results/*工作,而/結果/ **不工作?根據螞蟻路徑的樣式,**表示包含嵌套/字符,而*表示停在下一個/。所以,它只應該成功映射像/ results/123,bot NOT/results/123/abc /這樣的URL。對?

web.xml URL模式不是螞蟻式的模式,因此,只有.../**.xxx允許使用通配符在其中。

+0

好吧,所以我爲我的DefaultAnnotationHandlerMapping bean添加了。 @RequestMapping值應該是什麼?對不起,我是新來的... – 2011-05-10 19:12:56

+0

@Tony:應該是'/ results/**'。 – axtavt 2011-05-10 19:17:50

+0

好吧,我試過了,我得到:「找不到匹配的處理程序方法找到servlet請求:path'/ abc/123'」 – 2011-05-10 19:30:10

6

也許在你的servlet映射你想將所有流量「/ *」。這樣,您可以在您的控制器中區分使用不同的@ RequestMapping的方法。

<servlet-mapping> 
    <servlet-name>MyServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

@RequestMapping(value="/results/**", method=RequestMethod.GET) 
public ModelAndView handleResults() {...} 

@RequestMapping(value="/another-mapping/**", method=RequestMethod.GET) 
public ModelAndView handleAnotherMapping() {...} 

希望上面會以數字1幫助至於2號去的,我不認爲你可以用「螞蟻式」模式匹配器(特別是** )在你的web.xml域描述符中。

+0

嗯,好吧,我以爲我讀過它使用Ant風格,但我想我錯了。所以/ *對應於嵌套/ abc/123/....... – 2011-05-10 18:57:57