如何使用注释在SpringMVC中创建默认方法?

chu*_*ubs 9 java spring default spring-mvc url-routing

我无法找到解决方案,这让我发疯了.我有@Controller映射,它使用@RequestMapping响应多个方法.当没有指定更具体的内容时,我想将其中一个方法标记为默认值.例如:

@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 ) {}
}
Run Code Online (Sandbox Code Playgroud)

所以/ user/login - > login方法,/ user/logout - > logout等.我想这样做,如果有人去/ user,那么它会路由到这些方法之一.但是,我没有在@RequestMapping上看到任何允许我将这些方法之一指定为默认处理程序的内容.我也没有看到任何其他注释可能在类上使用这样做.我开始怀疑它不存在.

我正在使用Spring 2.5.6.这是在3.0.0中解决的吗?我可能只是破解Spring使其工作,因为它非常烦人,这不是更直接.

提前致谢.

Len*_*rri 13

看看这个答案:

Spring MVC和带注释的控制器问题

如果使用以下方法注释方法,该怎么办?

@RequestMapping(method = RequestMethod.GET)
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到一个例子:

Spring 3.0 MVC + Hibernate:简化了注释 - 教程

在这里可以看到相同的行为:

Aaron Schram的Spring Framework 3.0 MVC(见第21页)

  • 通过使用@RequestMapping(method = RequestMethod.GET)对其工作的一个方法进行注释.谢谢.但是,第一个链接不是同一个问题,不适用.其他链接更有帮助. (3认同)

veg*_*4me 5

简短回答:我不知道如何使用简单标记简单地将一个方法指定为默认值.

但有这个......

我不知道在哪个版本的Spring中实现了这个版本,但你可以在3.1.2中提供多个values @RequestMapping.所以我这样做:

@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) { }

}
Run Code Online (Sandbox Code Playgroud)

然后,以下网址将映射到listUsers():