我的 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
属性可能无法按预期工作吗?任何解决此问题的见解或建议将不胜感激。谢谢!
我已将 thymeleaf-spring5:3.1.2.RELEASE 更改为 thymeleaf:3.1.2.RELEASE 库,因为我没有找到该问题的任何解决方案。它按预期工作。