@Component
class DbTemplateResolver extends TemplateResolver {
@Autowired
SpringTemplateEngine templateEngine;
....othercode
@PostConstruct
public void extension() {
templateEngine.addTemplateResolver(this);
}
...other code
}
@Component
class MessageFormatHelper{
@Autowired
SpringTemplateEngine templateEngine;
... other code
String getMessage()
{
final Context ctx = new Context(locale);
ctx.setVariable("contractMap", model.get(ContractMap.TEMPLATE_MODEL_MAP_KEY));
mergedMessage = templateEngine.process(fileName, ctx);
}
}
完全错误:
原因:org.springframework.beans.factory.beanCreationException:无法自动执行字段:private com.flex.eventmanagement.handler.helper.messageformanagement.handler.helper.notificationpreprocessor.messageformathelper;嵌套异常是org.springframework.beans.factory.beanCreationException:创建名为“Message ForMathelper”的bean时出错:注入autowired依赖项失败;嵌套的异常是org.springframework.beans.factory.beanCreationException:不能autowire字段:org.Thymeleaf.spring4.SpringTemplateEngine com.flex.EventManagement.handler.helper.MessageForMathelper.TemplateEngine;嵌套异常是org.springframework.beans.factory.beanCreationException:创建名为'org.springframework.boot.autoconfigure.Thymeleaf.ThymeleafautoConfiguration$ThymeleafDefaultConfiguration'的bean时出错:注入autowired依赖项失败;嵌套异常是org.springframework.beans.factory.beanCreationException:不能autowire字段:private final java.util.collection org.springframework.boot.autoconfigure.thymeleafafautoConfiguration$thymeleafdefaultconfiguration.templateresolvers;嵌套异常是org.springframework.beans.factory.beanCreationException:创建名为“DB TemplateResolver”的bean时出错:注入autowired依赖项失败;嵌套的异常是org.springframework.beans.factory.beanCreationException:不能autowire字段:org.thymeleaf.spring4.springTemplateEngine com.flex.eventManagement.handler.helper.dbTemplateresolver.templateEngine;嵌套异常是org.springframework.beans.factory.beanCurrentlyIncreationException:创建名为“模板引擎”的bean时出错:请求的bean当前正在创建中:是否存在不可解析的循环引用?
更新了从DbTemplateResolver类中删除模板引擎自动连接。Autowire到MessageForMathelPer.java类中,如下所示
class MessageFormatHelper{
@Bean
public DbTemplateResolver dbTemplateResolver() {
DbTemplateResolver resolver = new DbTemplateResolver();
resolver.setOrder(2);
return resolver;
}
@Bean
public SpringTemplateEngine thymeleafTemplateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setTemplateResolvers(Sets.newHashSet(dbTemplateResolver()));
return engine;
}
}
另外,我需要从MessageFormatHelper中删除SpringTemplateEngine自动连线,对吗?那么如何调用mergedmessage=templateengine.process(fileName,ctx);
更新2。MessageFormatHelper中必须遵循
@Autowired
DbTemplateResolver dbTemplateResolver;
@Autowired
SpringTemplateEngine templateEngine;
@PostConstruct
public void extension() {
templateEngine.addTemplateResolver(dbTemplateResolver);
}
您的代码有缺陷,而且您似乎对Spring的工作方式以及应该如何使用Spring来配置东西缺乏基本的理解。
首先,您正在使用Spring Boot并希望使用Thymeleaf。这只需添加spring-boot-starter-thymeleaf
作为项目的依赖项即可。(我假设你已经这么做了)。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf<artifactId>
</dependency>
Spring Boot会检测到类路径上有Thymeleaf,ThymeleAfAutoConfiguration
将启动并为您配置SpringTemplateEngine
。它甚至会检测ItemplateResolver
类型的每个bean,我假设您的DBTemplateResolver
实现了这些bean。
@Bean
public ITemplateResolver dbTemplateResolver() {
return new DbTemplateResolver();
}
Spring将检测它并将其注入自动配置的SpringTemplateEngine
中。
您唯一需要做的是在类中需要SpringTemplateEngine
,您需要自动连接它。只需使用超类,而不是具体类型。
@Autowired
private TemplateEngine templateEngine;
不要在以后尝试配置它,使用框架进行配置。
我试图在spring中使用thymeleaf对文本字符串进行本地化。我的html模板位于/src/main/resources/templates/ 所以我有: 解析模板“索引”时出错,模板可能不存在,或者任何已配置的模板解析程序都无法访问 我怀疑这是由于行中的路径不正确造成的,但无法找到应该放在那里的前缀。 似乎大多数示例都将模板置于WEB-INF之下。这也是我应该遵循的推荐方式吗?
下面是index.html 它们在不同的文件夹中,但pathing应该工作,除非我只是错过了一些真正愚蠢的东西。
我有一个基本的SpringBoot应用程序。使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎和作为可执行JAR文件的包 我想将所有应用程序错误重定向到一个公共页面。我已经创建了这个控制器: 我的配置文件: 以及错误模板 但结果是: 这就是提出的解决方案的结果: 检查属性,这些是属性,消息就在那里:
我试图用SpringBoot中的一些数据填充一个thymeleaf模板。我想做的是 我已经尝试了这里提出的两种解决方案:如果属性和特性存在,则显示文本;按照Thymeleaf的呈现顺序,因为< code>group.organization为空,所以不应该显示整个内部< code>td。 还有一个问题,因为蒂梅莱夫抱怨说 我不明白为什么会发生这种情况,因为组对象存在,只是组织为空
所以,我看到在Stackoverflow中都能回答这个问题,但对我没有任何帮助。(SpringMVC+Thymeleaf,错误消息是:模板可能不存在,或者任何已配置的模板解析程序都无法访问
主要内容:1. Thymeleaf 简介,2. Thymeleaf 语法规则,3. Thymeleaf 公共页面抽取Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。它与 JSP,Velocity,FreeMaker 等模板引擎类似,也可以轻易地与 Spring MVC 等 Web 框架集成。与其它模板引擎相比,Thymeleaf 最大的特点是,即使不启动 Web 应用,也可以直接在浏览器中打开并正确显示模板页面 。 1. Thymeleaf 简介 Thymel