playのviewについて。

play newで雛形で作ったアプリのトップ画面のテンプレートがどこにあるのか?@itの記事 だと「Play20 / framework / src / play / src / main / scala / views / play20 / welcome.scala.html」みたいだ。ただ、このファイルがどこにあるのか?調査中。あと、ここが参考 になるかも。

main.scala.htmlで@routes.Assets.atで指定しているcss,js,img等の静的ファイルはpublicディレクトリ以下にある。@routes.Assets.atはpublic以下のディレクトリにアクセスするための指定かな。実際に表示されるhtmlを見るとassetsディレクトリの下になっている。 ここらの設定はroutsファイルでやっているっぽい。

index.scale.htmlの「@main("Welcome to Play 2.1") {」の@mainはmain.scala.htmlを呼び出す指定。

viewsディレクトリ以下のviewファイル(index.scale.html,main,scale.htmlとか)がコンパイルされてできたクラスファイルは、target/scale2-10/classes_managed/views/html/ディレクトリ以下にできる。クラスファイルの中身をみると、パッケージはviews.html。

Application.javaのretrun ok(index.return(引数))の引数の型を変更したら、eclipse上でimportエラーやアプリの実行時にcomipation errorが出る。この問題については、ここのControllerのApplication.javaからretrunするクラスをParentのListに変更した時 、に書いてある。

やっぱりviewを新規作成してcontrollerからrendarでreturnする部分を変更した時はcleanしてあげないと実行にエラーがでるし、compileコマンドでもエラーがでる。下がcompileコマンドでエラーが出た時のログ。nonzero exit codeか・・・

[hoge_sample] $ compile
[info] Compiling 6 Scala sources and 3 Java sources to C:\tec\play\testapplication\hoge_sample\target\scala-2.10\classes...
[error] C:\tec\play\testapplication\uranai_sample\app\controllers\Uranai.java:24: ・スG・ス・ス・ス[: ・スV・ス・ス・ス{・ス・ス・ス・ス・ス・ス・スツゑソス・ス・ス・スワゑソス・ス・ス
[error] return ok(name_result.render(name));
[error] ^
[error] ・スV・ス・ス・ス{・ス・ス: ・スマ撰ソス name_result
[error] ・ス齒・ ・スN・ス・ス・スX Uranai
[error] ・スG・ス・ス・ス[1・ス・ス
[error] (compile:compile) javac returned nonzero exit code
[error] Total time: 2 s, completed 2013/06/23 15:40:58

■画面表示(@,テンプレートエンジン,scale)
テンプレートエンジン(公式ver2.0)

Lv.13 テンプレートエンジンの基本的な使い方 [play framework2.0] [java]
Lv.14 テンプレートエンジンで独自ファンクションを使いたい![play framework2.0] [java]

■js,共通html,個別htmlの分離
scalaの変数渡しでjs,共通,個別htmlを部品化して分離できる。初めて見たときは奇抜でどうしていいか解らなかったが、今ではすごく斬新に感じていい。

Java Play framework 2.0で、テンプレートへのJavaScript埋め込み

■viewのファイル名
viewのファイル名なんだけど、「hoge-js.scala.html」「hoge.js.scala.html」みたいにハイフンを使ったり、ドットの数を増やしたりするとInvalid file name でcompilation errorが出る。フレームワークにお世話になっているからあまりいいたくないけど、こういう所が大嫌い。時間かけて何も得ることができない。中身をハックしたくなる。


■いつか
・play framework2でログイン機能を実装してみる