Vaadin,Spring-Boot和Vaadin附加组件

时间:2018-06-05 16:53:49

标签: vaadin vaadin8 vaadin4spring

在Vaadin 8.0项目中与Spring启动一起,我正在尝试使用Vaadin Add-on(WTPdfViewer,https://github.com/WhitesteinTechnologies/wt-pdf-viewer)来预览PDF文件。

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

获得它
sudo alien -i rpmpackage.rpm

而不是我认为是正确的:

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

项目的非Spring启动版本正常工作,因此我认为它与Vaadin加载项在Spring-boot项目中的工作方式有关。有任何想法吗?

2 个答案:

答案 0 :(得分:2)

  

我认为它与Vaadin附加组件在Spring-boot项目中的工作方式有关。

对于Spring Boot的附加组件,这不是通用问题。这个特定的附加组件有轻微的缺陷,它在这里有js-file的硬编码路径:

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

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

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

答案 1 :(得分:1)

似乎其他人遇到了同样的问题并在此处发布了解决方案: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;
    }
}

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