Надстройки Vaadin, Spring-Boot и Vaadin [дубликаты]

В проекте Vaadin 8.0 вместе с загрузкой Spring я пытаюсь использовать надстройку 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 работает правильно, поэтому я предполагаю, что это как-то связано с тем, как надстройки Vaadin работают в проекте Spring-boot. Любые идеи?


person user2465039    schedule 05.06.2018    source источник


Ответы (2)


Я предполагаю, что это как-то связано с тем, как надстройки 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< /а>

Обходной путь, который вы нашли, помогает решить эту проблему.

Лучшим подходом было бы выпустить патч для надстройки и параметризовать путь или сделать что-то другое подходящее исправление.

person Tatu Lund    schedule 05.06.2018

Кажется, у кого-то была такая же проблема, и он разместил здесь решение: vaadin">404 для файлов js при использовании весенней загрузки с vaadin

Я копирую из этого ответа;

Короче говоря, решение состоит в том, чтобы создать контроллер, который перенаправляет запросы с ошибочного 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;
    }
}

Что касается того, почему это происходит, связанный ответ дает подробное объяснение.

person user2465039    schedule 05.06.2018