ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

Play framework(3) - 定義ファイル(application.conf)から値を読み取る

Play frameworkで定義ファイルより値を取得する方法についてです。

以下の画面のタイトル(My Play Application)を、定義ファイルより取得して
画面に設定します。

f:id:UnderSourceCode:20130504101658j:plain

◆定義ファイル
まず、定義ファイルのソースです。
Play frameworkの定義ファイルは、「application.conf」で、アプリのルート\confフォルダ内に存在します。
ちなみにconfフォルダは文字通り定義ファイルを配置するフォルダなので、
中には画面のURLを定義する「routes」ファイルなども存在します。

..\conf\application.conf


# Application configuration
app.title=My Play Application

上記の記述を、application.confに追加しました。
# から始まる行がコメント行です。
定義は、キー=値、という形式となります。
ここでは、「app.title」というキーに、定義値を「My Play Application」としています。

◆ビュー
前回も見た、main.htmlです。

..\app\views\main.html


(略)
<body>
<div id="toplinks">
[<a href="@{Application.index()}">Home</a>]
[<a href="@{Secure.logout()}">Log out</a>]
</div>
<div id="pageTitle">
<h1>${pageTitle}</h1>
</div>
<div id="main">
#{ifErrors}
<p id="error">
${errors[0]}
</p>
#{/ifErrors}
#{doLayout /}
</div>
</body>
</html>

<h1>${pageTitle}</h1>で、「pageTitle」という変数の値をタイトルとして表示しています。

◆コントローラ
コントローラにて定義ファイルの値を取得し、画面に設定します。
今回の画面はアプリの初期画面であるため、コントローラは アプリのルート\app\controllers\Application.javaです。

..\app\controllers\Application.java


public class Application extends Controller {

@Before
static void addDefaults(){
renderArgs.put("pageTitle", Play.configuration.getProperty("app.title"));
}
(以下略)
}


@Beforeアノテーションで、アプリが起動する直前に実行するメソッドであることを指定しています。
定義ファイルからの値の取得は、Play.configuration.getProperty()メソッドに
キー(app.title)を渡すことで行っています。

そして取得した値をrenderArgs.put()メソッドの第二引数に渡すことで、画面に表示しています。
第一引数は、main.htmlで見た変数「pageTitle」を指定しています。