質問: 現在Spring boot + Thymeleafで開発を検討しております。 そこで、Spring bootのControllerより動的にCSSを出力したいと考えているのですが、 Thymeleafのテンプレートエンジンはデフォルトで拡張子が「.html」のファイルしか 見に行かないようで、拡張子が「.css」のファイルは読み込まないようです。 テンプレートのデフォルト拡張子を変更する方法があれば、ご教示いただけますでしょうか。
回答: だいぶ昔の質問ですが、私もいろいろ調べる中でこの質問に辿り着き、解決できたので。 ドキュメントにもあるのでこれで解決につながると思います。 1.2 What kind of templates can Thymeleaf process? キーワードは「テンプレートモード」。 あとはテンプレート使わない状態で、XSS対策を時までやる必要がありますが、 コントローラでレスポンスをtext/xssに設定したうえでResponseEntityにString詰めてゴリゴリとCSSを書いて返すという手もあります。 イメージ ``` ``` ``` @Controller public class CssController { @RequestMapping("/css/dynamic") public ResponseEntity test() { HttpHeaders headers = new HttpHeaders(); headers.setContentType("text/css"); StringBuilder cssStr = new StringBuilder(); cssStr.append("body{color:#000;}"); return new ResponseEntity(cssStr.toString(), headers, HttpStatus.OK); } } ```