さすが。というか、僕がThymeleaf使ってみようと思ったのも数年前にしんさんに教えてもらったからだもんな。たしか。
こういうのも
注:遊びです。
// メッセージ StandardMessageResolver resolver = new StandardMessageResolver(); resolver.addDefaultMessage("oreore.num", "{0}"); engine.setMessageResolver(resolver); // テンプレート String template = "[[#{oreore.num(${a+b})}]]";
MessageFormatがフォーマットしてくれるからってだけね。
全部書くとこう。
@Test public void test() { // 準備 TemplateEngine engine = new TemplateEngine(); // メッセージ StandardMessageResolver resolver = new StandardMessageResolver(); resolver.addDefaultMessage("oreore.num", "{0}"); engine.setMessageResolver(resolver); // テンプレート String template = "[[#{oreore.num(${a+b})}]]"; // パラメータ Map<String, Object> params = new HashMap<>(); params.put("a", 1000); params.put("b", 20000); IContext context = new Context(Locale.getDefault(), params); // 生成 String result = engine.process(template, context); // 出力 assertThat(result, is("21,000")); }
そうか
StringTemplateResolverって3.0で追加されたのか。これが3.0からだって気づいてなかった。
StringTemplateResolver (thymeleaf 3.0.0.RELEASE API)
TemplateEngineのデフォルト設定でStringTemplateResolverが使われるようになってます。
これは、ファイルからじゃなくて、文字列をそのままテンプレートとして使えますよってResolverです。
僕が「TEXTモードなのかな?」って勘違いしてしまったんだけど、HTMLモードのインライン機能を使ってるからTEXTモードとは別の話だね。