【问题标题】:Vaadin, Spring-Boot and Vaadin add-ons [duplicate]Vaadin、Spring-Boot 和 Vaadin 附加组件 [重复]
【发布时间】:2018-06-05 16:53:49
【问题描述】:

在带有 Spring boot 的 Vaadin 8.0 项目中,我尝试使用 Vaadin 插件(WTPdfViewer,https://github.com/WhitesteinTechnologies/wt-pdf-viewer)来预览 PDF 文件。

我遇到的问题是,在尝试查看 PDF 文件时,插件会尝试从我认为错误的路径中获取关联的 javascript 资源。因此它试图从

http://localhost:8080/my/uipath/APP/PUBLISHED/pdf.worker.js

而不是我认为是正确的:

http://localhost:8080/vaadinServlet/APP/PUBLISHED/pdf.worker.js

该项目的非 Spring Boot 版本可以正常工作,所以我认为它与 Vaadin 附加组件在 Spring-boot 项目中的工作方式有关。有任何想法吗?

【问题讨论】:

    标签: vaadin vaadin8 vaadin4spring


    【解决方案1】:

    我认为这与 Vaadin 插件在 Spring-boot 项目中的工作方式有关。

    不,这不是 Spring Boot 附加组件的普遍问题。这个特定的插件有一个小缺陷,它在这里有 js 文件的硬编码路径:

    https://github.com/WhitesteinTechnologies/wt-pdf-viewer/blob/master/src/main/java/com/whitestein/vaadin/widgets/wtpdfviewer/client/WTPdfViewerWidget.java#L920

    您找到的解决方法有助于解决此问题。

    更好的方法是向插件发布补丁并参数化路径或进行其他适当的更正。

    【讨论】:

      【解决方案2】:

      好像其他人也有同样的问题,把解决方法贴在这里:404 for js files when using spring boot with vaadin

      我正在复制那个答案;

      简而言之,解决方案是创建一个控制器,它将对错误 URL 的请求转发到正确的 URL。

      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.RequestMapping;
      
      @Controller
      public class PdfJsRedirectController {
          private static final String WORKER_JS_INCORRECT_PATH = "/APP/PUBLISHED/pdf.worker.js";
          private static final String WORKER_JS_CORRECT_FORWARD_PATH = "forward:/vaadinServlet/APP/PUBLISHED/pdf.worker.js";
      
          @RequestMapping(value = WORKER_JS_INCORRECT_PATH)
          public String forwardWorkerJsRequestToVaadin() {
              return WORKER_JS_CORRECT_FORWARD_PATH;
          }
      }
      

      至于为什么会发生这种情况,链接的答案提供了详细的解释。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-13
        • 2019-07-30
        • 1970-01-01
        • 2015-06-14
        • 2021-05-27
        • 2017-04-13
        • 1970-01-01
        相关资源
        最近更新 更多