2012-05-24 94 views
1

我有我的應用程序中2個控制器如下春3.0 MVC控制器請求映射

@Controller("/test1") 
public class Test1Controller { 
    @RequestMapping("/new") 
    public String newtest1() { 
    //.... 
    } 
} 

@Controller("/test2") 
public class Test2Controller { 
    @RequestMapping("/new") 
    public String newtest2() { 
    //.... 
    } 
} 

現在,如果我做出/test2/new的請求,請求將另一個控制器/test1/new。這裏有什麼不對嗎?

+1

這兩個類具有相同的名稱('Test1Controller') - 我認爲這是一個錯誤? –

+0

對不起......我編輯帖子 – gnreddy

+0

@TomaszNurkiewicz:沒關係。導致控制器bean名稱不一致。 –

回答

6

解析控制器名稱只是回退,它不會在該請求映射和實際請求映射之間進行混合和匹配。只需在控制器上放置一個真正的請求映射。

@Controller 
@RequestMapping("/test1") 
public class Test1Controller { 
    @RequestMapping("/new") 
    public String newtest1() { 
    //.... 
    } 
} 

@Controller 
@RequestMapping("/test2") 
public class Test2Controller { 
    @RequestMapping("/new") 
    public String newtest2() { 
    //.... 
    } 
} 
+0

某些原因,這對我也不起作用:(。現在請求不被控制器截獲 – gnreddy

+0

什麼是根的完整URL /什麼是調度器servlet映射到的?你使用的是mvc:annotation- (或者你是否設置了你自己的映射處理程序? – Affe

+0

要使用類型級別@RequestMapping,你需要刪除衝突的基於bean名稱的映射(也就是說,既沒有@Controller(「/ test」)也沒有@RequestMapping (「/ test」))並確保DefaultAnnotationHandlerMapping已加載(如果不使用默認值)。 – Affe

相關問題