Scala

playframework2のアドレス設計・・・

普通フレームワーク使っていないアプリだと、ファイル名 = URLになることがおおいと思います。
例えば、/index.htmlは/index.htmlとアクセスすれば表示されます。

playframework2のURLは、設定ファイルを使って決定されるようです。
なるほどなるほど。
その設定ファイルは、/conf/routesとなります。
標準では以下のようになっています。
[perl]
# Home page
GET / controllers.Application.index()
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.at(path="/public", file)
[/perl]
サンプルアプリなので、すっごいシンプルに記述してあると思いますので、なんとなくわかります。
controllersパッケージのApplicationクラスのindexというメッソドを呼び出しますよーっていうことですかね。

今回このまま記述していってもいいと思うのですが、それではあまりにも芸がないのと少しroutesファイルにも慣れたいので、新たにパスを設定してみます。
/timelineにアクセスがあった場合は、ツイートのタイムラインページを表示してみたいと思います。
[perl]
# Home page
GET / controllers.Application.index()
# Twitter Timeline page
GET /timeline controllers.Application.index()
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.at(path="/public", file)
[/perl]

とりあえず、設定が反映されたことを確認するためにcontrollers.Application.index()としましたので、/timelineにアクセスしてページが表示されるか確認してみます。

おお、無事に表示されました。
Welcome to Play 2.1-1

今は、最初のサンプルページが表示されておりますので、timeline用のページを作成して、表示してみます。

conf/routes

[perl]
# Home page
GET / controllers.Application.index()

# Twitter Timeline page
GET /timeline controllers.Application.timeline()

# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.at(path="/public", file)
[/perl]

views/timeline.scala.html

ここで、一つファイルを作成しておきます。
views/timeline.scala.htmlというファイルを作成します。これはタイムラインを表示するページになります。
とりあえず、内容は適当にしておきました。
[html]
@(message: String)

@main("Welcome to Play 2.1") {
テストです
}
[/html]

controllers/Application.java

timelineメッソドを作成します。が、ここで問題発生
[java]
public static Result timeline() {
return ok(timeline.render("Your new application is ready."));
}
[/java]
と書きたかったのに、timelineなんてねぇよ!とエラーが表示されます。
views以下にscala.htmlを置いただけだと、だめなんですかね。色々と調べたところ、一度コンパイルしないとscala.htmlのクラスは作成されないみたいです。ということで、コンパイルします。
[bash]
play compline
[/bash]
これでクラスファイルは作成されましたが、Eclipseからは認識されていないので、プロジェクトの更新をします。これで無事timelineクラスがインポートできるようになりました。

実行

では、実行してみます。
Welcome to Play 2.1-2

とりあえず今回の目的である、/timelineにアクセスすると、timeline専用のページを表示できる部分まで作成できました。
せっかくなので、もう少し手を入れたいと思います。

Bootstarpのサンプルコードを表示させる

前回の記事で作成した、Twitter Bootstrapのサンプルコードをtimeline.scala.htmlに書いてみたいと思います。
[html]
@(message: String)

@main("Welcome to Play 2.1") {
<!-- Main hero unit for a primary marketing message or call to action -->
<div class="hero-unit">
<h1>★ユーザー名</h1>
<p>★概要</p>
<p><a href="#" class="btn btn-primary btn-large">Learn more &raquo;</a></p>
</div>
<!-- Example row of columns -->
<div class="row">
<div class="span4">
<p>★ツイート</p>
<p><a class="btn" href="#">View details &raquo;</a></p>
</div>
<div class="span4">
<p>★ツイート</p>
<p><a class="btn" href="#">View details &raquo;</a></p>
</div>
<div class="span4">
<p>★ツイート</p>
<p><a class="btn" href="#">View details &raquo;</a></p>
</div>
</div>
}
[/html]
で保存して、ブラウザで表示してみます。

Welcome to Play 2.1-3
表示されました。

というわけで、とりあえず今回の目的は達成です。
次回は、Twitterからタイムライン情報を取得して表示させてみたいと思います。

-Scala
-

© 2025 ビー鉄のブログ Powered by AFFINGER5