質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

2回答

1369閲覧

Contorollerで設定したthymeleafの形式の文字列を解釈させる

yuki_naki

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2021/06/09 02:33

編集2021/06/09 05:14

前提・実現したいこと

Contorollerで設定したthymeleafの形式の文字列を解釈させたい

発生している問題・エラーメッセージ

解釈されずにそのまま表示されてしまう

該当のソースコード

java

1@Controller 2public class HelloController { 3 4 @GetMapping("/hello") 5 public String hello(Model model) { 6 model.addAttribute("css","<link rel=\"stylesheet\" th:href=\"@{${#test.buildPass('test.css')}}\">"); 7 8 ); 9 return "hello"; 10 } 11}

thymeleaf

1<th:block th:utext="${css}"></th:block>

<link rel="stylesheet" th:href="@{${#test.buildPass('test.css')}}">
となってしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/06/09 02:37

コードはマークダウンのcodeにてご提示ください
guest

回答2

0

ベストアンサー

テンプレートの一部をケースごとに分けて、動的に組みたてたいというニーズであれば、
SpringTemplateEngine を使うのはいかがでしょうか。

分けたい部分事に切り出したテンプレートを String 形式で組み立てて、
ベースのテンプレートにはインライン式で埋め込めば実現できるようになります。

@Controller public class EngineController { private final SpringTemplateEngine springTemplateEngine; public EngineController(SpringTemplateEngine springTemplateEngine) { this.springTemplateEngine = springTemplateEngine; } @GetMapping("/api/template/engine") public String engine( Model model, @RequestParam(name = "pattern", defaultValue = "false") boolean pattern) { // request parameter などの変数で使いたいテンプレート分けられるようにする final String cssStructure = template(pattern); model.addAttribute("css", cssStructure); // ベースのテンプレートのテンプレート呼び出し return "base_template"; } private String template(boolean pattern) { final Context context = new Context(); if (pattern) { // pattern1 のテンプレート呼び出し context.setVariable("href", "http://.../pattern1.css"); return springTemplateEngine.process("pattern_1", context); } // pattern1 のテンプレート呼び出し context.setVariable("href", "http://.../pattern2.css"); return springTemplateEngine.process("pattern_2", context); } }

pattern_1.html のテンプレートの例

<link rel="stylesheet" th:href="${href}">

投稿2021/06/09 22:32

kiino

総合スコア557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

htmlとして認識させたいのでしたら動的なところだけ渡してきちんとThymeleafにlinkタグを書くしかないと思います。
textもutextもあくまでそのタグのinnerテキストを指定する機能です。

投稿2021/06/09 02:36

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問