Spring:如何使路由与页面上的 URL 保持同步?

Posted

技术标签:

【中文标题】Spring:如何使路由与页面上的 URL 保持同步?【英文标题】:Spring: How can I keep routes in sync with URLs on the page? 【发布时间】:2019-03-05 19:34:42 【问题描述】:

如何使我的 UI 模板(例如 Thymeleaf 模板)中的链接与我的 Spring 应用程序中的相应请求映射保持同步?

我见过,例如Play 框架在其模板中使用@router-Object。 Spring是如何解决的?

一个例子:

Spring 控制器 - 简单

@Controller
public class UserController 

  @GetMapping("/users/username")
  public String getUser(@PathParam String username) 
    // do some stuff....
    return "user";
  

html 页面

<body>
  <a href="/users/1">User details</a>
</body>

现在我想将“/users”更改为“/accounts”。我很确定我必须手动更新每个 html 页面以更新链接。有没有更简单的解决方案?

【问题讨论】:

【参考方案1】:

据我所知,使用 Spring 的内置工具没有简单的方法可以做到这一点。但是,我认为这不会太难构建。您将需要以下内容:

定义了所有 URL 模板的 YAML 文件 一个 Properties Spring bean,包含您的 URL 映射(从 YAML 文件中读取) 你所有的@RequestMapping注解都必须是prop值; IE。 @GetMapping("$urls.users.byUsername") 了解Properties bean 的自定义标记,可以从您的 YAML 文件中定义的模板创建 URL。

【讨论】:

以上是关于Spring:如何使路由与页面上的 URL 保持同步?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 ASP CheckBoxList 标签与复选框保持在同一行

Angular+ngrx:如何在路由器 url 遍历中保持存储状态?

如何使反应路由器与静态资产、html5 模式、历史 API 和嵌套路由一起工作?

如何在每个页面的地址栏中保持相同的 url?

Django之(URL)路由系统

整个网站应该是 https 还是只是关键页面(以及如何使页面 http 与 https 保持一致)