Spring MVC,链接到JSP中的控制器,以及DRY原则



我有一个包含数百个控制器的Spring MVC应用程序。在控制器中,我使用通常的@Requestmapping映射:

@RequestMapping(value="/someUrl.go")
public String myMethod () {
    // implementation here;
}
现在,在JSP页面中,我像这样构建到另一个页面的链接:
<a href="someUrl.go">Link to another page</a>

问题:目标页面的相对URL, "someUrl。go"和其他数百个类似的代码在我的应用程序中被编写了两次——一次在注释中,一次在链接到它的JSP中。实际上,有些页面是从多个JSP链接到的,因此它们的URL被编写了很多次。

Spring MVC提供任何解决方案吗?理想情况下,我希望对Spring MVC所知道的所有URL进行反向映射,并且每个URL都有一个唯一的名称,这样我就可以在JSP中使用该名称来获取URL,而不是对其进行硬编码。

更新:这似乎是我如何在Spring MVC中创建基于控制器和动作方法的URL的副本?在另一个问题中,他们问的是Spring MVC 3。在Spring 4中解决了这个问题,如下所示(https://jira.spring.io/browse/SPR-5779)

我找到了解决方案,在这里解释(https://jira.spring.io/browse/SPR-5779)。JSP代码如下所示:

<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
<a href="${s:mvcUrl('AC#myMethod').build()}">Link to another page</a>

其中AC是我的控制器类的骆驼大小写首字母。如果因为控制器有相似的名称而产生冲突,则可以显式地为每个带注释的方法分配一个名称,如下所示:

@RequestMapping ( name = "myName", value= ...)

相关内容

最新更新