【发布时间】:2015-09-10 14:11:30
【问题描述】:
我正在尝试为使用 thymeleaf 属性的 SVG 设置第二个解析器,因此它需要由我的 spring boot 应用程序中的模板引擎解析。到目前为止我的实现:
ThymeleafSvgConfig
@Configuration
public class ThymeleafSvgConfig {
@Bean
public FileTemplateResolver svgTemplateResolver(){
FileTemplateResolver svgTemplateResolver = new FileTemplateResolver();
svgTemplateResolver.setPrefix("classpath:/svgtemplates/");
svgTemplateResolver.setSuffix(".svg");
svgTemplateResolver.setTemplateMode("XML");
svgTemplateResolver.setCharacterEncoding("UTF-8");
svgTemplateResolver.setOrder(0);
return svgTemplateResolver;
}
}
ThymeleafSvgController
@Controller
public class ThymeleafSvgController {
@Autowired
private ServletContext servletContext;
@Autowired
private TemplateEngine templateEngine;
//.. logging etc.
@RequestMapping(value = "/getSvg", method = { RequestMethod.GET, RequestMethod.POST })
public void getSvg(@RequestParam(required = false) String type, HttpServletRequest request, HttpServletResponse response) {
WebContext context = new WebContext(request, response, servletContext, request.getLocale());
templateEngine.process("test", context, response.getWriter());
}
}
我读到 Spring Boot 会自动搜索解析器并将它们添加到引擎 [s. this]。所以我假设我的配置应该足够了,并且通过自动装配我应该得到正确的模板引擎。
但是我在我的应用程序中仍然收到相同的错误,尝试调用时:templateEngine.process("test", context, response.getWriter());
我的 SVG 保存在 /src/main/resources/svgtemplates/test.svg
例外:org.thymeleaf.exceptions.TemplateInputException: Error resolving template "test", template might not exist or might not be accessible by any of the configured Template Resolvers
我不确定我的配置错误,所以我需要一些帮助。 FileTemplateResolver 是正确的类吗?我也尝试了 ClassLoaderTemplateResolver 但它抛出了同样的异常。来自 Spring Boot 的标准 Thymeleaf Resolver 工作正常,它使用标准前缀:“classpath:/templates/”。所以考虑到“模板”和“svgtemplates”位于同一个文件夹中,我的前缀到目前为止应该是正确的,不是吗?
也许其他人看到了这个缺陷。
【问题讨论】:
标签: java spring-mvc spring-boot svg thymeleaf