【发布时间】:2017-07-15 03:45:03
【问题描述】:
我正在尝试使用 Thymeleaf 处理 YAML 文件。示例文件如下:
apiVersion: v1
kind: Service
metadata:
name: [[${app['name']}]]
labels:
app: [[${app['name']}]]
spec:
type: NodePort
ports:
- port: 80
protocol: TCP
name: http
- port: 443
protocol: TCP
name: https
selector:
app: nginx
值 app.name 来自我在运行时解析的另一个 YAML 文件。
到目前为止我已经尝试过:
-
使用
Properties创建MessageSourceTemplateEngine templateEngine = new TemplateEngine(); templateEngine.setTemplateResolver(templateResolver); StandardMessageResolver messageResolver = new StandardMessageResolver(); messageResolver.setDefaultMessages(props); // contains app.name templateEngine.setMessageResolver(messageResolver); -
在上下文中设置变量
map.put("app.name", "test"); context.setVariables(map); // contains app.name
但我不断收到错误消息:
Exception evaluating OGNL expression: "app['name']
...
Caused by: ognl.OgnlException: source is null for getProperty(null, "name")
使用 Thymeleaf 3.0.3.RELEASE。我使用的是 Spring 而不是 Spring,因为 spring-boot-starter-thymeleaf 带来了 HTML 最需要的大量包袱,我决定自己实例化模板解析器和引擎。似乎人们很少使用 Thymeleaf 处理 TEXT;我遇到的所有示例都是 HTML。
我还想知道如何在我的模板中包含 YAML 片段。
编辑: 感谢@Metroids,我得到了它的工作。这是我的示例应用程序的link,以防其他人遇到类似问题。
【问题讨论】:
标签: spring thymeleaf template-engine