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

发布于 2024-11-07 22:51:00 字数 488 浏览 0 评论 0原文

我正在使用 Spring MVC 3.0

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

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

所以我很困惑 - 这个功能在某些标签库中吗?框架是否公开它?我是否必须扩展框架才能使其正常工作?

请注意,我不会对 url 进行硬编码(这是一个明显但较弱的解决方案),而是根据控制器和操作名称生成它。

更新: Spring MVC 不提供此功能。不过有一张 JIRA 票。您可以在这里投票 https://jira.springsource.org/browse/SPR-5779

I am using Spring MVC 3.0

I have a guestbook.jsp page where I want to create a link that points to GuestBookController's login method.

This is a simple task that most web frameworks handle this (e.g grails does it with g:link tag) but I couldn't find any documentation on this in the official SpringMVC docs.

So I am scratching my head - Is this functionality in some tag library? Does the framework expose it? Do I have to extend the framework to get this to work?

Note, I am not taking about hardcoding the url (which is an obvious but weak solution) but rather generating it based on controller and action name.

UPDATE:
Spring MVC doesn't provide this functionality. There is a JIRA ticket though. You can vote here https://jira.springsource.org/browse/SPR-5779

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

偏闹i 2024-11-14 22:51:00

简短的回答是否定的,目前您无法使用 Spring MVC 来做到这一点。

遗憾的是,您可以在其他框架中执行此操作,包括 Grails(它在底层使用 Spring MVC)。

请参阅此处的讨论 其中包含一个指向 Spring 功能请求的链接,以添加此功能(投票!)

The short answer is no, you can't do this with Spring MVC currently.

It's a shame because you can do this in other frameworks including Grails (which uses Spring MVC under the hood).

See the discussion here which includes a link to a Spring feature request to add this (vote for it!)

请恋爱 2024-11-14 22:51:00

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

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

在您的控制器中:

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

Spring MVC uses the standard JSTL tags in JSPs so:

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

In your controller:

@RequestMapping(value = "/guestBook")
public String handleGuestBook() { ... }
饮湿 2024-11-14 22:51:00

Spring HATEOS 库 提供了一个 API 来生成 MVC 控制器的链接方法多种多样。

例如:

URI url = linkTo(methodOn(GuestBookController.class).login()).toUri();

The Spring HATEOS library provides an API to generate links to MVC controller methods in various ways.

For example:

URI url = linkTo(methodOn(GuestBookController.class).login()).toUri();
ぃ双果 2024-11-14 22:51:00

使用 @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。

Annotate your login method with @RequestMapping, like so:

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

Then, in your JSP, create a link something like this:

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

This assumes that your dispatcher servlet is looking for *.html URLs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文