Grails で Hello World してみる
Groovy in Action や Grails 徹底入門を読みながら Grails をマスターしようとしている。 まずはドメインクラスをつくって...CRUDのスカッフォールドして...という流れが基本だとは思うが ここではまずもっと基本的な Hello World 表示だけをやってみたのでメモ。
コントローラのアクションとビューの関連付けがどうなっているのかわかなかったので その辺の理解も含めて。
Hello, World! を表示させる
Grails のインストールは済んでいることとする。
Step1 アプリケーションの作成
grails create-app helloworld
./helloworld 以下にウェブアプリケーションのひな形?が生成されます。
Step2 コントローラの作成
Hello World 表示だけなので、ドメインクラスは必要ない。 いきなりコントローラを作成します。
cd helloworld
grails create-controller hello
以下のファイルが生成される。
- grails-app/controllers/helloworld/HelloController.groovy
- test/unit/helloworld/HelloControllerTests.groovy
HelloController.groovy にアクションを記述
create-controller hello したときに ひな形として以下のコードが生成されている。
package helloworld
class HelloController {
def index = { }
}
これを自分用に変更する。
package helloworld
class HelloController {
def index = {
[msg:'Hello, World!']
}
}
'msg'というキーと'Hello, World!'という値をもったマップを返すように変更。
Step3 ビューの作成
HelloControllerの index に対応した ビューを grails-app/views/hello/index.gsp に作成します。
<html>
<body>${msg}</body>
</html>
Step4 アプリケーションを起動して確認
helloworld アプリケーションのルートディレクトリに移動して run-app します。
grails run-app
そして、 http://localhost:8080/helloworld/ にブラウザでアクセス。

さらに、helloworld.HelloController のリンクをクリックして...

どうやら Grails では、 controllers/helloworld/HelloController.groovy 内のアクション名に対応したビューを views/hello/index.gsp ( views/コントローラ名/アクション名.gsp ) に 配置しておく約束になっているようだ。
Step5 別のアクションとビューの作成
アクションとビューの対応関係を確認するため、 もうひとつ別のアクションと対応するビューを作成してみる。
コントローラにアクションを追加
以下のように HelloController.groovy に test というアクションを追加。
package helloworld
class HelloController {
def index = {
[msg:'Hello, World!']
}
def test = {
[msg:'Hello again, Grails!']
}
}
indexアクションと区別するために、Hello again, Grails! という値を返すように変更。
対応するビューを追加
さらに HelloControllerの test に対応した ビューを grails-app/views/hello/test.gsp に作成します。
<html>
<body>${msg}</body>
</html>
この状態で、 http://localhost:8080/helloworld/hello/test にアクセスすると見事に表示できました。
