2010-07-25 98 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。