簡體   English   中英

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

[英]How can I create a URL based on controller and action method in Spring MVC?

我正在使用Spring MVC 3.0

我有一個guestbook.jsp頁面,我想創建一個指向GuestBookController的登錄方法的鏈接。

這是一個簡單的任務,大多數Web框架都可以處理這個問題(例如Grails用g:link標簽完成)但我在官方的SpringMVC文檔中找不到任何關於此的文檔。

所以我在摸不着頭腦 - 這個功能在某些標簽庫中嗎? 框架是否暴露了它? 我是否必須擴展框架才能使其工作?

注意,我沒有采取硬編碼url(這是一個明顯但很弱的解決方案),而是基於控制器和動作名稱生成它。

更新 :Spring MVC不提供此功能。 雖然有一張JIRA票。 你可以在這里投票https://jira.springsource.org/browse/SPR-5779

簡短的回答是否定的,目前你不能用Spring MVC做到這一點。

這很遺憾,因為您可以在其他框架中執行此操作,包括Grails(在引擎蓋下使用Spring MVC)。

請參閱此處的討論其中包含添加此功能的Spring功能請求的鏈接(投票支持!)

Spring MVC在JSP中使用標准的JSTL標記,因此:

<c:url value="/guestBook.html" var="guestBookLink" />
<a href="${guestBookLink}">Guest Book</a>

在你的控制器中:

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

很長一段時間以來,我一直在考慮使用CGLib代理實現類似的東西,但是太懶了。 看來, Spring HATEOS庫將允許您以我所知的代理方式和其他各種方式來實現。

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

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

然后,在JSP中,創建如下鏈接:

<c:url var="loginlink" value="/mycontextroot/login.html">
</c:url>
<a href="${loginlink}">Login</a>

這假設您的調度程序servlet正在查找* .html URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM