アプリ開発

playframework2のアドレス設計・・・

投稿日:2013/05/28 更新日:

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

playframework2のURLは、設定ファイルを使って決定されるようです。
なるほどなるほど。
その設定ファイルは、/conf/routesとなります。
標準では以下のようになっています。

# 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)

サンプルアプリなので、すっごいシンプルに記述してあると思いますので、なんとなくわかります。
controllersパッケージのApplicationクラスのindexというメッソドを呼び出しますよーっていうことですかね。

今回このまま記述していってもいいと思うのですが、それではあまりにも芸がないのと少しroutesファイルにも慣れたいので、新たにパスを設定してみます。
/timelineにアクセスがあった場合は、ツイートのタイムラインページを表示してみたいと思います。

# 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)

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

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

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

conf/routes

# 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)

views/timeline.scala.html

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

@(message: String)

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

controllers/Application.java

timelineメッソドを作成します。が、ここで問題発生

    public static Result timeline() {
    	return ok(timeline.render("Your new application is ready."));
    }

と書きたかったのに、timelineなんてねぇよ!とエラーが表示されます。
views以下にscala.htmlを置いただけだと、だめなんですかね。色々と調べたところ、一度コンパイルしないとscala.htmlのクラスは作成されないみたいです。ということで、コンパイルします。

play compline

これでクラスファイルは作成されましたが、Eclipseからは認識されていないので、プロジェクトの更新をします。これで無事timelineクラスがインポートできるようになりました。

実行

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

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

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

前回の記事で作成した、Twitter Bootstrapのサンプルコードをtimeline.scala.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>
}

で保存して、ブラウザで表示してみます。

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

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

-アプリ開発
-

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

no image

Twitterアプリの画面サンプル

Playframework2で作っているアプリですが、Twitterのタイムラインをどんなふうに表示させようかなーと思って、bootstrapのページを色々みているのですが、先の記事の画面でとりあえず …

no image

playframework2でテストをしてみる

Playframework2のパッケージ構成をみてみると、testパッケージがあります。 ApplicationTest.javaというソースコードがあり、この中をみてみると、 public clas …

no image

Playframework2のプロジェクトをEclipseプロジェクトに変換

実は、管理人はEcilpseを使ってそろそろ10年近くになります。 本当はNetBeansとか使ってみればいいんでしょうけど、なかなかツールを変える勇気がなくEclipseを使っています。 で、調べて …

no image

MacにPlayframework2をインストールする

実は、わたくし今までほとんどフレームワークらしいフレームワークは使ったことがありません。 さすがに、そろそろフレームワークでも触ってみようかと思って色々調べました。 一応この業界に10年ほどいるんです …

no image

Xcodeアップデート時に発生するエラー

Xcodeをアップデートすると、たまに妙なエラーが発生することがあります。 必ず発生するわけではないのですが、先日もXcodeを4.6.2にアップデートして、アプリをビルドすると PCH file b …