Thymeleaf 模板无法处理并抛出 NoSuchMethodError

问题描述 投票:0回答:1

我的 Thymeleaf 模板中的

th:href
属性遇到问题。我正在使用 Thymeleaf 版本 3.1.2.RELEASE 以及 Thymeleaf Spring5 集成。尽管正确设置了
th:href
属性,但链接并未按预期生成并抛出以下错误:

Caused by: java.lang.NoSuchMethodError: 'java.lang.String org.thymeleaf.util.ExpressionUtils.normalize(java.lang.String)'

以下是我的设置:

        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.1.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>nz.net.ultraq.thymeleaf</groupId>
            <artifactId>thymeleaf-layout-dialect</artifactId>
        </dependency>
@Configuration
public class ThymeleafTemplateConfig
{
    @Bean
    public SpringTemplateEngine springTemplateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.addTemplateResolver(htmlTemplateResolver());
        return templateEngine;
    }

    @Bean
    public ClassLoaderTemplateResolver htmlTemplateResolver(){
        ClassLoaderTemplateResolver emailTemplateResolver = new ClassLoaderTemplateResolver();
        emailTemplateResolver.setPrefix("templates/");
        emailTemplateResolver.setSuffix(".html");
        emailTemplateResolver.setTemplateMode(TemplateMode.HTML);
        emailTemplateResolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
        return emailTemplateResolver;
    }
}
@Service
@RequiredArgsConstructor
public class EmailService {

    private final SpringTemplateEngine templateEngine;

    protected String createSummaryEmailBody(RunEntity runEntity, String filesLink) {
        Context context = new Context();
        context.setVariable("year", runEntity.getFinancialYear());
        context.setVariable("period", runEntity.getFinancialPeriod());
        context.setVariable("filesLink", filesLink);
        return templateEngine.process("summary-report", context);
    }
}

摘要报告.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Report Summary</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
        }
        table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 20px;
        }
        th, td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: left;
        }
        th {
            background-color: #f2f2f2;
        }
        .link {
            color: #007bff;
            text-decoration: none;
        }
    </style>
</head>
<body>
<div>
    <h1>Report Summary</h1>
    <p><strong>Year:</strong> <span th:text="${year}"></span></p>
    <p><strong>Period:</strong> <span th:text="${period}"></span></p>
    <p>Files are ready to view <a class="link" th:href="${filesLink}" target="_blank">here</a>.</p>
</div>
</body>
</html>

在我的 Java 代码中,我在 Thymeleaf 上下文中设置 filesLink 变量。 但是,当渲染模板时,出现上述错误。我尝试通过删除

th:href
来解决此问题,然后错误停止了。

有人可以建议一下为什么

th:href
属性可能无法按预期工作吗?任何解决此问题的见解或建议将不胜感激。谢谢!

java spring-boot thymeleaf email-templates
1个回答
0
投票

我已将 thymeleaf-spring5:3.1.2.RELEASE 更改为 thymeleaf:3.1.2.RELEASE 库,因为我没有找到该问题的任何解决方案。它按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.