【问题标题】:Microservice with own UI with Spring and Thymleaf带有 Spring 和 Thymeleaf 的具有自己的 UI 的微服务
【发布时间】:2016-06-15 02:06:36
【问题描述】:

我有三个 Web 应用程序微服务和一个包含 UI 的网关。所以,我想做的是改变每个微服务都有自己的 UI 并且网关应该让服务器端包含的应用程序。我使用 Thymeleaf 作为模板引擎并像这样执行包含:

<div th:replace="http://localhost:8080/#/organizations"></div>

我的问题是原始 localhost:8080 服务器不包含 CSS 和 JS 文件,而是包含内容 localhost:9090 的服务器。

这就是我在 *:8080 处包含 JS 和 CSS 文件的方式:

<script th:src="@{webjars/jquery/$jquery.version$/jquery.min.js}"</script>

希望你能理解我的问题,并且有人可以帮助...

【问题讨论】:

  • 你能发布更多代码吗?发布organizations 面板代码。我认为出现问题是因为script 定义在organizations 面板之外。尝试将其严格包含在此面板中。 ...或者您无权访问微服务源代码?
  • 组织来源只是像<div>This is a test</div> 这样的普通html makup,并且像我的问题一样包含来自css和javascript文件的内容
  • 我的意思是他们不包括在请求http://localhost:8080/#/organizations的服务器答案中。或者他们是?
  • 应要求提供。你是说在组织里?是的,像这样<script th:src="@{webjars/jquery/$jquery.version$/jquery.min.js}"</script>
  • 也许它们被聚合器方面的其他脚本覆盖?您是否有任何关于 organizations 包含的脚本?其他 Jquery 导入?

标签: spring thymeleaf microservices ssi


【解决方案1】:

这个 ${#httpServletRequest.requestURL} 成功了...

<link th:href="@{__${#httpServletRequest.requestURL}__webjars/bootstrap/?{bootstrap.version}/css/bootstrap.min.css}" rel="stylesheet" />

现在一切正常。

【讨论】:

    【解决方案2】:

    如果您将使用来自本地主机的资源,我认为您无法实现预期的行为。您的测试页面可以访问上下文 9090 的本地资源,例如例如,当它试图请求时 <script th:src="@{webjars/angularjs/$angularjs.version$/angular.min.js}"></script> 从 9090 请求转到 9090,但资源在 8080。 如果您将使用来自 CDN(来自互联网)的静态资源,它将起作用。

    也许this article会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-22
      • 2023-03-23
      • 2020-07-01
      • 2017-02-17
      • 2017-05-28
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      相关资源
      最近更新 更多