Thymeleaf: шаблон недоступен при загрузке PDF онлайн с помощью Spring Boot 2.0.3

Я загружаю файл PDF с помощью веб-приложения, разработанного с помощью Spring Boot 2.0.3 и использующего Thymeleaf, из раздела администратора, защищенного с помощью Spring Security. Локально работает нормально, но онлайн я получаю эту ошибку:

org.thymeleaf.exceptions.TemplateInputException: Error resolving template "/email/confirmedbooking", template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause

Это контроллер:

@GetMapping("/admin/bookings/booking-pdf")
public void generatePdfBooking(@RequestParam Long idbooking, HttpServletResponse response)
                               throws IOException, Exception{

    bookingService.setBookingService(idbooking);
    Booking booking = bookingService.getBooking();
    Guest guest = bookingService.getGuest();

    String idlanguage;
    if(guest.getIdlanguage() != null){
        idlanguage = guest.getIdlanguage();
    } else {idlanguage = "en";}

    Map<String, Object> map = new HashMap<>();
    map.put("booking", booking);
    map.put("guest", guest);

    byte[] data = pdfGenerator.createPdf("/email/confirmedbooking", map, idlanguage);

    pdfGenerator.streamReport(response, data, "id-" + booking.getIdbooking() + ".pdf");
}

Это выдержка из HTML-страницы:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<head>
    <link rel="stylesheet" href="/webjars/bootstrap /css/bootstrap.min.css"/>
    <link rel="stylesheet" href="/css/rentalwebs.css"/>
</head>

<body>
    <table style="width:680px" class="table table-borderless">
        <tbody>
            <tr>
                <td>
                    <h2 th:text="${property.name}"></h2>
                </td>
            </tr>
            <tr>
                <td>
                    <span th:text="#{booking.id}"></span>
                    <span th:text="${booking.idbooking}"></span>
                    ....

В качестве генератора шаблонов я использую org.xhtmlrenderer.pdf.ITextRenderer (flying-saucer-pdf).

Я протестировал предоставление различных файлов.html для создания PDF на pdfGenerator.createPdf("/email/confirmedbooking", map, idlanguage);, но результат всегда один и тот же.

1 ответ

Следуя совету Даниэля Микусы, я смог решить проблему, вынув первый / из /email/confirmedbookingоставив код так:

byte[] data = pdfGenerator.createPdf("email/confirmedbooking", map, idlanguage);

Кажется, что он не распознал путь, возможно, из-за проблемы двойной косой черты, уже объясненной в этом посте: Ошибка разрешения шаблона с помощью Spring Boot с использованием Thymeleaf, упакованного в банку.

Другие вопросы по тегам