如何在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库将允许你以我所知的代理方式和各种其他方式来实现它。