当前位置: 首页 > 知识库问答 >
问题:

从资源/模板和字符串解析模板

喻昀
2023-03-14

在我的应用程序中,我需要使用硬连线的html模板,我将通过将它们添加到资源/模板和动态文本模板,我想在运行时存储在Strings中。

我的代码与此类似:

@Autowired
SpringTemplateEngine templateEngine;

templateEngine.addTemplateResolver(new DynamicTemplateResolver());

Context context = new Context();
context.setVariable("foo1", ... );

templateEngine.process("eitherStaticOrDynamic", context, output);

问题存在于实现ITemplateResolver的DynamicTemplateResolver中。我试图使用处理字符串模板中给出的示例与thymeleaf 3,但它们似乎不再适用于当前版本的Spring。

如何从Strings解析模板?我使用SpringBoot2.2

共有1个答案

陶鹏
2023-03-14

我想我找到了解决办法。我的错误是基于误解。thymeleaf提供了一个StringTemplateResolver与这个javadoc:

...这个模板解析器将把被解析的模板视为模板本身,也就是它的内容。因此不会访问任何外部文件或资源。

在这个评论中隐藏(至少对我来说)的事实是,给定的字符串被认为是模板,而不是搜索模板名称。这意味着如果您提供foo = [(${foo})],则不会将其视为需要按名称查找的模板,而是将其视为(在本例中为文本)模板!

这和改变我的代码到这解决了我的问题:

StringTemplateResolver tr = new StringTemplateResolver();
tr.setTemplateMode(TemplateMode.TEXT);

如果没有此设置,则无法解析我的模板,因为文本模式模板遵循与html模板不同的语法。

 类似资料:
  • 我刚刚开始使用springboot,我被这个问题卡住了。没有数据通过控制器。我只想跳转到“index.html”页面,这是一个模板,从bootstrap下载。 这是我的控制器。 index.html. 堆栈跟踪如下。 我想知道我的依赖关系有什么问题吗?

  • ES6引入了一种通过反引号( ` )标记的新的字符串文字类型。 这些字符串文字可以包括换行符,并且有一个新的机制用于将变量插入字符串:

  • 下面就是Array#pack、String#unpack中所用到的模板字符的一览表。模板字符后面可以跟上表示"长度"的数字。若使用'*'来取代"长度"的话, 则表示"剩下的所有字符"之意。 长度的定义因模板字符的不同而有所差异, 大体上像 "iiii" 这样的连续字符可以写成 "i4" 这个样子。 在下面的说明中, short和long分别表示长度为2和4字节的数值(也就是通常32位机器所指的

  • 本文向大家介绍ES6模板字符串和标签模板的应用实例分析,包括了ES6模板字符串和标签模板的应用实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ES6模板字符串和标签模板的应用。分享给大家供大家参考,具体如下: ES6 中对字符串进行了扩展,而模板字符串就是一个非常实用的方式,可以在html中实现与变量和方法的混编 之前我们手动拼接字符串的方式 ES6中使用模板字符串来优化了拼接的方

  • 移动设备 我们为移动设备提供了 10 种模版,你可以使用这些模版来规范设计。 Layout Mobile Whiteframe - 2 MB(.ai) 平板设备 我们为平板设备提供了 14 种模版,你可以使用这些模版来规范设计。 Layout Tablet Whiteframe - 3 MB(.ai) 桌面环境 我们为桌面环境提供了 4 种模板,每种都包含 4 个不同屏幕尺寸,你可以使用这些模版来