如何在Spring MVC中基于控制器和操作方法创建URL?

我正在使用Spring MVC 3.0

我有一个guestbook.jsp页面,我想创建一个指向GuestBookController的登录方法的链接。

这是一个简单的任务,大多数Web框架都会处理这个问题(例如Grails使用g:link标签)但我在官方SpringMVC文档中找不到任何相关文档。

所以我在摸不着头脑 – 这个function是否在某些标签库中? 框架是否暴露了它? 我是否必须扩展框架才能使其工作?

注意,我没有采取硬编码url(这是一个明显但很弱的解决方案),而是基于控制器和动作名称生成它。

更新 :Spring MVC不提供此function。 虽然有一张JIRA票。 你可以在这里投票https://jira.springsource.org/browse/SPR-5779

简短的回答是否定的,目前你不能用Spring MVC做到这一点。

这是一个遗憾,因为你可以在其他框架中执行此操作,包括Grails(它使用Spring MVC)。

请参阅此处的讨论,其中包含添加此function的Springfunction请求的链接(投票支持!)

Spring MVC在JSP中使用标准JSTL标记,因此:

 Guest Book 

在你的控制器中:

 @RequestMapping(value = "/guestBook") public String handleGuestBook() { ... } 

使用@RequestMapping注释您的登录方法,如下所示:

 @Controller public class GuestBookController { ... @RequestMapping(value="/mycontextroot/login", method = RequestMethod.GET) public String login() { ... } ... } 

然后,在JSP中,创建一个如下所示的链接:

   Login 

这假设您的调度程序servlet正在查找* .html URL。

很长一段时间以来,我一直在考虑使用CGLib代理实现类似的东西但是太懒了。 看来, Spring HATEOS库将允许你以我所知的代理方式和各种其他方式来实现它。