簡単なアプリの作成
****
このサンプルは中止。play scala0.9.1からはscala templatesというものが導入され、 標準のテンプレート作成方法はそちらに移行するらしい
****
方針
既存のデータベース(PostgreSQL)データをメンテナンスするための社内用の簡単なアプリを作成する。
- コードはSubversionで管理する。
- テンプレートhtmlは入れ子機能と置換機能しか使用しない。テンプレート内での条件分岐や数式等は必要ない。
- 既存データベースのスキーマは変更しない。
- 社内で利用するためのものなので、デザイン等には凝らない。
テンプレート側
デコレータの使い方
複数ページにわたって同じデザインを用いるのはデコレータを使うのが簡単だが、指定方法は少々わかりにくい。例えば、 commonFrame.htmlの中にuserList.html等を埋め込むには、commonFrame.htmlを
<html> <body> ... #{doLayout/} ... </body> </html>
などとして、#{doLayout/}部分に各ページが埋め込まれるようにする。埋め込まれる側のuserList.htmlは
#{extends 'commonFrame.tml'/}
などと記述すればよいのだが、しかしこの行はuserList.htmlのどこにあってもよい。また、複数のextendsを記述すると、エラーは出ず、最も最後のものが有効になる。
#{extends 'commonFrame.tml'/} #{extends 'anotherFrame.tml'/} <!-- これが有効 -->
であるから、extendsはファイルの最初に記述するよう習慣づけるのがよいと思われる。
不明点
デコレータファイルのパスを指定する方法が不明。そもそもデフォルトで作成されるアプリは、
views +-- main.html +-- Application +-- index.html
となっているが、なぜindex.htmlに#{extends 'main.html'/}と記述するとmain.htmlを指すことになるのか説明がない。
置換
${}の中に式を記述するとそれが展開されるらしい。が、とりあえずは単に「変数」を記述し、その変数値をプログラム側で設定すればよい。
${variable}
ただし、これは常にエスケープされるため、エスケープされないようにするには次のようにする。
${variable.raw}