【问题标题】:Spring MVC, links to controller in JSP, and DRY principleSpring MVC、JSP中控制器的链接、DRY原理
【发布时间】:2015-10-07 19:33:08
【问题描述】:

我有一个带有数百个控制器的 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” 和其他数百个类似的 URL,在我的应用程序中写了两次 - 一次在注释中,一次在 JSP 中链接到它。实际上,有些页面是从多个 JSP 链接到的,所以它们的 URL 被写了很多次。

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

更新:这似乎与 How can I create a URL based on controller and action method in Spring MVC? 重复,除了在另一个问题中他们询问有关 Spring MVC 3 的问题。在 Spring 4 中,此问题已解决,如下所示 (https://jira.spring.io/browse/SPR-5779 )

【问题讨论】:

  • 让我理解您的意图...您不想编写链接,但您想添加另一层抽象并编写链接标识符而不是链接本身。对我来说,这似乎是“更少的音乐,更多的钱”。
  • 我正是想要那个,不是为了更多的钱而少听音乐,而是更多的音乐:) 实际上,我在这里找到了解决方案:jira.spring.io/browse/SPR-5779 和这里:stackoverflow.com/questions/6022980/…
  • 这很有趣,而且我不知道存在的东西......很好的发现。

标签: spring-mvc


【解决方案1】:

我找到了解决方案,这里有解释 (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= ...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    相关资源
    最近更新 更多