2010-07-25 91 views
8

我找不到解決方案,這讓我瘋狂。我有@Controller映射,使用@RequestMapping響應幾個方法。當沒有更具體的指定時,我想將其中一個方法標記爲默認方法。例如:如何使用註釋在SpringMVC中創建默認方法?

@Controller 
@RequestMapping("/user/*") 
public class UserController { 

    @RequestMapping("login") 
    public String login(MapModel model) {} 

    @RequestMapping("logout") 
    public String logout(MapModel model) {} 

    @RequestMapping("authenticate") 
    public String authenticate(MapModel model) {} 
} 

所以/用戶/登錄 - >登錄方法,/用戶/註銷 - >註銷,等我想使它所以,如果有人去/用戶則其路由到一個這些方法。但是,在@RequestMapping中我沒有看到任何可以讓我將這些方法之一指定爲默認處理程序的東西。我也沒有看到任何其他可能在課堂上使用的註釋來做到這一點。我開始懷疑它不存在。

我使用Spring 2.5.6。這是在3.0.0解決?我可能只是破解Spring,使其工作,因爲它非常惱人,這不是更直接。

在此先感謝。

+0

+1感謝您的精彩問題! – 2011-03-07 18:04:53

回答

12

看看這個答案:

Spring MVC and annotated controllers issue

如果標註有一種方法是什麼:

@RequestMapping(method = RequestMethod.GET) 

這裏你可以看到一個例子:

Spring 3.0 MVC + Hibernate : Simplified with Annotations – Tutorial

可以看到相同的行爲ñ這裏:

Spring Framework 3.0 MVC by Aaron Schram(看21頁)

+3

通過使用@RequestMapping(method = RequestMethod.GET)對其工作的一種方法進行註釋。謝謝。但是,第一個鏈接不是同一個問題,也不適用。其他鏈接更有幫助。 – chubbsondubs 2010-07-25 11:25:50

5

簡短的回答:我不知道如何簡單地指定一個方法,默認用一個簡單的標籤。

但有這...

我不知道在春天的版本開始實施,但你可以在3.1.2 @RequestMapping提供多個value秒。所以我這樣做:

@Controller 
@RequestMapping("/user") 
public class UserController { 

    @RequestMapping(value = {"", "/", "/list"}, method = RequestMethod.GET) 
    public String listUsers(ModelMap model) { } 

    @RequestMapping(value = "/add", method = RequestMethod.POST) 
    public ModelAndView add(HttpServletRequest request, ModelMap model) { } 

} 

以下網址,然後映射到listUsers()

0

我沒有RequestMapping的價值創建一個默認的方法在那裏。請參閱下面的方法defaultCall()。然後,您可以簡單地用URL調用它們:[yourhostname] /用戶

@Controller 
@RequestMapping("/user") 
public class UserController { 

    @RequestMapping(method = RequestMethod.GET) 
    public String defaultCall(MapModel model) { 
     //Call the default method directly, or use the 'forward' String. Example: 
     return authenticate(model); 
    } 

    @RequestMapping("login") 
    public String login(MapModel model) {} 

    @RequestMapping("logout") 
    public String logout(MapModel model) {} 

    @RequestMapping("authenticate") 
    public String authenticate(MapModel model) {} 
} 

編號:Spring Framework Request Mapping

0

只需用@RequestMapping("**")上的默認方法應該工作。任何更具體的映射仍然應該接受他們的請求。我有時使用這種方法來設置默認方法。目前使用Spring v4.3.8.RELEASE。

相關問題