Please enter your password of your account at the remote wiki below.
/!\ You should trust both wikis because the password could be read by the particular administrators.

Clear message
Locked History Actions

Play/Begin

簡単なアプリの作成

****
このサンプルは中止。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}

プログラム側