3

我想知道 Spring MVC 中是否有办法将“url 名称”映射到 URL。例如:

list_users -> /admin/users/list
edit_user?id=123 -> /admin/users/edit/123 (or /users/edit?id=123)
list_programs -> /admin/programs/list

我来自 PHP 背景(特别是 Symfony),其中每个 URL/动作都有一个“路由名称”,您可以使用它在视图模板中创建 URL。在 Symfony 中,您可以在模板中执行以下操作:

{{ path('user_edit', { 'id' : 123} }}

//output = /admin/users/edit/123 

URL 不一定需要是 RESTful 的,但我只是想知道 Spring MVC 是否可以完成类似的事情。

我想过的可能的解决方案:

将 url 列在属性/消息文件中,例如:

url.users.edit=/admin/users/edit/{id}
url.users.list=/admin/users/list

然后使用<spring:message code="url.users.list" />或类似的东西来生成 URL。这已经是普遍接受的解决方案了吗?这可能是不好的做法吗?

我要问的原因是,将完整的 URL 分布在整个 JSP 中似乎是一种不好的做法。如果 25 个 URL 位于“/admin”子目录下,我想将它们移动到不同的子目录,比如“/backend”,会发生什么情况。

请原谅我是否在某个地方有重复的帖子,或者如果有一个我忽略的简单解决方案,但这是一个很难找到具体答案的话题。

谢谢!

4

1 回答 1

2

万一有人遇到这篇文章,我找到了一个将名称映射到 Spring MVC 的 URL 的解决方案:

https://github.com/resthub/springmvc-router

这个解决方案可以很好地完成工作,我特别喜欢你的所有 URL / 路由都能够保存在一个中心位置的事实。此实现使@RequestMapping注释无用。

请记住以下几点:

确保您的调度程序 servlet*用作 URL 参数。我花了一段时间才发现/仅靠它是行不通的,并且会导致 URL 生成不正确。

<servlet-mapping>
    <servlet-name>spring-dispatcher</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
于 2013-08-16T12:42:49.973 回答