Spring 引导:在多个 html 页面上管理 API

Spring Boot: managing APIs over multiple html pages

我正在使用 Spring 引导和 HTML 页面构建 Web 应用程序。

在多个 HTML 页面中,我使用相同的导航栏:

<ul class="navbar-nav mr-auto"> 
            <li class="nav-item active">
                <a href="/home" class="nav-link">Home</a>
            </li>
            <li class="nav-item">
                <a href="/user/showAllProducts" class="nav-link">All Products</a>
            </li>

现在我不得不更改 API 中显示所有产品 (/user/showAllProducts) 的 URL,我不得不更改大约 10 HTML 页。

有没有一种简单的方法可以在一个配置文件(application.properties?)中管理所有 API URL 并直接将它们注入 HTML 页面? 将显示所有产品的列表项只是导航栏中许多其他链接的一个示例。

非常感谢您的帮助

执行此操作的最佳方法是在局部上下文中。如果您想使用 thymeleaf 或 jsp 之类的东西,您可以在每个 HTML 或 JSP 文件中将导航栏作为一行插入,然后随时更改特定的部分文件(导航栏,header、页脚等)它将被插入到网络应用程序中显示的任何页面中。

这是 Spring 文档中的示例。

https://www.baeldung.com/spring-thymeleaf-fragments

您可以使用 ${@environment.getProperty('key')}application.properties 中阅读 属性 并使用 th:fragment 为您的页面创建可重复使用的片段。

首先,创建一个nav.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head></head>
<body>
  <ul th:fragment="nav" class="navbar-nav mr-auto">
    <li class="nav-item active">
      <a th:href="${@environment.getProperty('your.home.property.here')}" class="nav-link">Home</a>      
    </li>
    <li class="nav-item">
      <a th:href="${@environment.getProperty('your.products.property.here')}" class="nav-link">All Products</a>
    </li>
</body>
</html>

并在您的网页中使用 th:replace

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>Hello Thymeleaf</title>
</head>
<body>
    <div th:replace="nav :: nav"></div>
</body>
</html>