Ошибка привязки контекста к HTML-шаблону с помощью thymeleaf - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь получить некоторые данные формы в HTML-шаблон и в конечном итоге в PDF, используя iText.На линии:

String processedHtml = templateEngine.process(templateName, ctx);

Я получаю сообщение об ошибке:

2018-09-12 12: 13: 17.680 ОШИБКА 18264 --- [nio-8080-exec-3] org.thymeleaf.TemplateEngine: [THYMELEAF] [http-nio-8080-exec-3] Шаблон обработки исключительной ситуации "output.html": произошла ошибка при разборе шаблона (template: "ресурс пути к классу [templates / output.html]")

Причина: org.attoparser.ParseException: Невозможно обработать атрибут '{th: field, data-th-field}': не удалось найти связанный BindStatus для предполагаемых операций привязки формы.Это может быть связано с отсутствием надлежащего управления Spring RequestContext, которое обычно выполняется через ThymeleafView или ThymeleafReactiveView (template: "output.html" - строка 52, столбец 36) в org.attoparser.MarkupParser.parseDocument (MarkupParser.java: 393) ~ [attoparser-2.0.4.RELEASE.jar: 2.0.4.RELEASE] в org.attoparser.MarkupParser.parse (MarkupParser.java:257) ~ [attoparser-2.0.4.RELEASE.jar:2.0.4.RELEASE] at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse (AbstractMarkupTemplateParser.java:230) ~ [thymeleaf-3.0.9.RELEASE.jar: 3.0.9.RELEASE] ... 61 общие кадры опущены

output.html строка 52:

   <input type="number" class="form-control inputnid person text-uppercase" 
         data-property="nid" id="nid" placeholder="NID" 
         th:field="*{assessment.nid}"/>

Полный метод:

public class PdfGeneratorUtil { 

    public static final String BASEURI = "src/main/resources/static"; 
    @Qualifier("templateEngine") 
    @Autowired 
    private TemplateEngine templateEngine; 

    public void createPdf(String templateName, Map map) throws Exception { 
        Assert.notNull(templateName, "The templateName can not be null"); 
        Context ctx = new Context(); 
        if (map != null) { 
            Iterator itMap = map.entrySet().iterator(); 
            while (itMap.hasNext()) { 
                Map.Entry pair = (Map.Entry) itMap.next(); 
                ctx.setVariable(pair.getKey().toString(), pair.getValue()); 
            } 
        } 

        String processedHtml = templateEngine.process(templateName, ctx); 
        PdfWriter writer = new PdfWriter("C:\\tmp\\assessment.pdf"); 
        PdfDocument pdfDoc = new PdfDocument(writer); 
        ConverterProperties converterProperties = new ConverterProperties().setBaseUri(BASEURI); 
        HtmlConverter.convertToPdf(processedHtml, pdfDoc, converterProperties); 
        System.out.println("PDF created successfully"); 
    } 
}

1 Ответ

0 голосов
/ 12 сентября 2018

Нашли исправление. Поскольку трассировка стека намекает на th: поле должно быть th: проверено на наличие флажков.

...