テンプレートの一部をケースごとに分けて、動的に組みたてたいというニーズであれば、
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}">