私はThymeleafを使ってYAMLファイルを処理しようとしています。サンプルファイルは以下の通りである: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ファイルから来ています。私がこれまで試したどのような
:
が作成
MessageSource
コンテキストmap.put("app.name", "test"); context.setVariables(map); // contains app.name
しかし、私に変数を設定する
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
StandardMessageResolver messageResolver = new StandardMessageResolver();
messageResolver.setDefaultMessages(props); // contains app.name
templateEngine.setMessageResolver(messageResolver);
Properties
とエラーが発生し続ける:
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を使ってテキストを処理する人はほとんどいないようです。私が出会ったすべての例はHTMLです。
テンプレートにYAMLの断片を含める方法も知っています。
: @Metroidsのおかげで、私はそれを働かせました。他の誰かが同様の問題を抱えている場合は、私のサンプルアプリケーションにはlinkがあります。
これは私が最終的にしたものです。私は、 'MessageResolver'が' app.name'を解決できる印象を受けました。それは、それがメッセージキーの一般的なフォーマットだからですが、そうではありませんでした。 あなたの返信をフラグメントインクルードで更新してください。私はそれを受け入れます。 –
ああ、あなたはタイメリーフフォーラムの同じ人です...それを得ました。 – Metroids
私は '[#th:text ="#{app.name} "/]'がメッセージに対しても機能することを発見しました。あなたの構文はより簡潔です。助けてくれてありがとう。来る人の利益のために、私が取り組んでいるサンプルアプリケーションへのリンクを含むように私の質問を編集しました。 –