【发布时间】:2013-08-17 00:04:49
【问题描述】:
我想知道 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”,会发生什么情况。
如果有重复的帖子,或者我忽略了一个简单的解决方案,但这是一个很难找到具体答案的话题,请原谅我。
谢谢!
【问题讨论】:
-
我建议阅读此文档:static.springsource.org/spring/docs/3.2.x/…。它很长,但我认为它很好地解释了如何使用 Spring mvc 创建控制器。您可能还想查看此页面以了解如何使用
<c:url>标签:tutorialspoint.com/jsp/jstl_core_url_tag.htm。 -
我对控制器和 Spring MVC 的工作原理以及 JSTL 核心有相当完整的理解(和经验)。您能否详细说明您的评论与我帖子中的任何内容有何关联?
-
我很抱歉我错过了你的问题的重点。不过,我将有兴趣看到答案。附带说明一下,Play 框架就是这样做的。 :)
-
@jlars62 - 我已经回答了我自己的问题。
标签: spring jsp spring-mvc