23
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

すきなことをしよう(仮)Advent Calendar 2015

Day 23

FreeMarkerでちょくちょく見る記法や、おっ!と感じたTips集

Last updated at Posted at 2015-12-23

こんにちは、スマートフォン向けソーシャルゲームのフロントエンドやってます。
うちのプロジェクトでは**FreeMarker**というJavaのテンプレートエンジンを使っています。

Freemarkerのリファレンスの使い方でよく使用するものを日本語でまとめ

こちらのブログは簡潔で分かりやすく、とても気に入っています。
ただ、ここに書かれてはいないけれど、よく使われているものは当たり前ですがまだ沢山あります。
今までプロジェクト内で見てきたもので、この書き方いいなあと思ったものや、自分が書いたものでこれはまたそのうち書きそうだな、と感じたものを少しだけコメントも交えてまとめようと思います。

上記の記事の内容を一通り頭に入れた後にこの記事を見ると、うちのプロジェクトの大抵のページのコードがFreeMarkerの観点でいえば、問題なく読めることを目指しています。


?string

flg?string('hoge', 'fuga') - 三項演算子みたいな

<#assign flg = true>
${flg?string('flgはtrue', 'flgはfalse')}

flgはtrue

jsでいうflg ? 'hoge' : 'fuga'みたいなことができます。

date?string('yyyyMMddHHmmss') - 日付表現

<#assign date = 201503252200?datetime('yyyyMMddHHmm')>
${date?string('yyyy年MM月dd日HH時mm分')}

2015年03月25日22時00分

seconds?string('00') - ゼロ埋め

<#assign restTime = {'minutes' : 5, 'seconds' : 3}>
${restTime.minutes}:${restTime.seconds?string('00')}

5:03

「0:00」のような表記をしたいのに、数値型で値が来てしまい「0:0」となってしまうのを防げます。

その他ビルトイン

?datetime('yyyyMMddHHmm')

<#assign dateNum = 201511262200>
${dateNum?datetime('yyyyMMddHHmm')?string('MM月dd日')},

<#assign dateStr = '2015年11月26日22時00分'>
${dateStr?datetime('yyyy年MM月dd日HH時mm分')?string('yyyy/MM/dd HH:mm')}

11月26日, 2015/11/26 22:00

大文字、小文字、一文字目大文字

<#assign str = 'hoGe'>
${str?upper_case}, ${str?lower_case}, ${str?capitalize}

HOGE, hoge, Hoge

#{q} - 小数を四捨五入せずに表示

<#assign q = 2.6>
${q}, #{q}

3, 2.6

list

1..n - 配列なしで指定回数回したいとき

<#assign n = 5>
<#list 0..n as i>
	${i}
</#list>

0 1 2 3 4 5

Tips

<#assign list = list + [item]>

<#assign inputList = ['hoge', 'fuga']>

<#assign outputList = []>
<#list inputList as item>
	<#assign outputList = outputList + [item]>
</#list>

<#list outputList as out>
	${out}
</#list>

hoge fuga

push(item)みたいなことができるのか、なるほどと感じました。

${['zero', 'one', 'two', 'three'][n]}

<#assign n = 2>
${['zero', 'one', 'two', 'three'][n]}

two

数字って素晴らしいなと思いました。

${item['${key}']}

<#assign item = {'name': 'hoge'}>
<#assign key = 'name'>
${item['${key}']}

hoge

入れ子にできるみたいで書いてて驚きました。

23
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?