この修正で今まで使っていたファイルを以下のような役割に変えます。
|
まずは、index.scala.htmlです。
@(parents: List[models.Parent]) <!DOCTYPE html> <html> <head> <title>DBの中身</title> <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")"> <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")"> <script src="@routes.Assets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script> </head> <body> @for(parent <- parents) { @main(parent) } </body> </html>
次に、main.scala.htmlです。
@(parent: models.Parent) <div>@parent</div> @for(child <- parent.children) { <div>└ @child</div> }
最後に、Application.javaです。
package controllers; import java.util.List; import models.Parent; import play.db.ebean.Model.Finder; import play.mvc.Controller; import play.mvc.Result; import views.html.index; public class Application extends Controller { public static Result index() { // 現在のParentを全検索して表示 Finder<Long, Parent> finder = new Finder<Long, Parent>(Long.class, Parent.class); List<Parent> parents = finder.all(); return ok(index.render(parents)); } }
index.scala.htmlの引数を変えているので、Application.javaを上記の通り修正するとEclipse上でコンパイルエラーになると思います。ここで、「http://localhost:9000/」にアクセスしコンパイルし直すとコンパイルエラーも解消されます。Webブラウザでは、このように表示されるはずです。
一字一句同じにはならないですが、およそこの図のように表示されていれば修正成功です。
今回の修正を行うに際して、直面しやすい問題と解消方法をまとめました。
テンプレートをインポートすると、Eclipse上でコンパイルエラーが表示されます。以下は「main.scala.html」というテンプレートを作成してJavaコードから呼び出した場合の例です。
このままでもプロジェクトを実行できますが、Javaクラスファイルが格納される「target/scala-2.9.1/classes_managed」フォルダへのパスを通すとエラー表示を解消できます。上記例の場合、テンプレートのJavaクラスファイルは次の通り格納されます。
次の手順を行うことでJavaクラスファイルへのパスを通し、コンパイルエラーを表示させないようにすることができます。
以上を1度行っておくことで、以降は、プロジェクトを実行してWebブラウザでアクセスすれば、コンパイルエラーが消えるようになります。それでもコンパイルエラーが消えないときは、targetフォルダやその配下のフォルダを右クリックして[リフレッシュ]するようにしてください。
Eclipseでの開発時にテンプレートに文字化けが生じるときがあります。
次のように文字化けを解消してください。
また、<header>タグがあるテンプレートファイルであれば、以下のような<meta>タグでContent-Typeでエンコードを指定すると、なお良いでしょう。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
プロジェクトを実行すると、クラスファイルなどを格納するtargetフォルダが自動的に更新されますが、「classes_managed」「src_managed」フォルダは正しく更新されないときがあります。
エラーが発生したら、次の手順を行って最新化するようにしてください。
これで、Play frameworkビューのお話は以上です。ビューではScalaを使用するということで二の足を踏んでいた方にも、今回のお話で難しく考える必要はないと感じていただけたと思います。では、次回はコントローラ周りのお話しをして、めでたくMVCをコンプリートしましょう。
木村 重昭(きむら しげあき)
2008年より、株式会社ビーブレイクシステムズに在籍。
プログラミングを趣味とする経理マン。ユーザーとエンジニア両方の視点を兼ね備えたシステム開発者を目指し、日々奮闘中。
多田 丈晃(ただ たけあき)
2008年より、株式会社ビーブレイクシステムズに在籍。
さまざまな現場を渡り歩くさすらいのIT芸人。昼は現場プログラマー、夜は技術系ライターと2つの顔を持つ。最近は加えて、技術系カンファレンスでの講演も行うなど、色々なものに手を出し、チャレンジを楽しんでいる
Copyright © ITmedia, Inc. All Rights Reserved.