2017-04-06 98 views
1

我的春天啓動應用程序時遇到如下問題:春季啓動:@RequestMapping優先

我有兩個@RequestMapping

@RequestMapping(value = "/{categorySlug:^[a-z0-9-]+$}/{slug:^[a-z0-9-]+$}") 
public ModelAndView aTutorial(

     @PathVariable(value = "categorySlug", required = false) String categorySlug, 

     @PathVariable(value = "slug") String slug) { 

    // (1) 
} 

@RequestMapping(value = "https://stackoverflow.com/questions/**") 
public ModelAndView fix404() { 

    // (2) 
} 
我用

(2)重定向404頁到主頁。

但是當我去像這樣的網址:https://w3stacks.com/questions/fix,我希望它(2),但它請求處理(1),由/questions/fix吻合{categorySlug)/{slug}

那麼如何對(2)或換句話說,可以自定義@RequestMapping之間的優先順序?

感謝。

+0

我剛剛嘗試刪除正則表達式'/ {categorySlug}/{slug}',但它保持在(1),@ bureaquete –

回答

0

您可以忽略questions字的categorySlugaTutorial API。 有點像;

@RequestMapping(value = "/{categorySlug:^(?!questions)[a-z0-9-]+$}/{slug:^[a-z0-9-]+$}") 

有了這一點,你就無法得到與questionsaTutorial API開始像/questions/etc任何電話,但也忽略/questionsCategory/etc

因此fix404端點將利用適當如你所希望的。

+0

但它必須(2)不? (2)然後重定向到主頁 - @bureaquete –

+0

是的,我給出的@ RequestMapping是(1),所以你的調用'/ questions/**'可以達到(2) –