我想做的是使用thymeleaf模板处理器来解析和执行FO文档的变量替换。对我来说,从概念上讲,这应该是可行的——FO文档是一个有效的xml文件,所以我应该能够通过thymeleaf引擎运行它并让它替换节点值(例如)。我似乎不能做的是适当地混合命名空间。有人能告诉我正确的语法是什么吗?
<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:th="http://www.thymeleaf.org"
font-size="3.6mm" font-family="Courier">
<!--/*@thymesVar id="model" type="mypackage.Model"*/-->
<fo:layout-master-set>
...
<fo:table-cell>
<fo:block th:text="${model.county}">
Chittenden
</fo:block>
</fo:table-cell>
还是我想的完全错了?
我知道已经太迟了,但我想分享答案,以便其他人可以参考。
您可以很好地使用thymeleaf来处理您的FO文件。在您的情况下
<fo:block th:text="${model.county}">
Chittenden
</fo:block>
在这里,您已经为标签提供了文本内容
。因此,您不需要显式提供文本内容,Thymeleaf将处理您的th: text="${model.县}"
并将其替换为您的文本内容。
因此,正确的用法应该是
<fo:block th:text="${model.county}"/>
还有,
您的Thymeleaf处理器引擎应配置如下,
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setTemplateMode(TemplateMode.XML);
templateResolver.setPrefix("classpath:/templates/");
templateResolver.setSuffix(".fo");
return templateResolver;
}
@Bean
public TemplateEngine templateProcessorEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setEnableSpringELCompiler(true);
templateEngine.setTemplateResolver(templateResolver());
return templateEngine;
}