前回のエントリでGrailsのInstallと動作確認をした。そこで、以下の簡単なアプリを作るとした。
まずはそれぞれのModelを作る必要がある。それぞれ「Member」「Task」というClassにする。
- まずはMemberClassを作成する。以下のコマンドを実行する。
$ grails create-domain-class Member
- 以下の2行が含まれたメッセージが表示される。
Created for Member
...
Created Tests for Member
なんかTestCaseの雛形も一緒に出してくれるっぽい。Railsもこぅなんだろぅな。
- 生成された「grails-app/domain/Member.groovy」を編集する。
class Member {
Long id
String name
String password
}
Groovyがわかってないので見よう見まねで作っただけ。
- 次にTask…ではなく、まずはWebAppとして動作させたいためControllerを作成することにする。以下のコマンドを実行する。
$ grails create-controller Member
- 以下の2行が含まれたメッセージが表示される。
Created Controller for Member
...
Created ControllerTests for Member
これまたTestCaseの雛形も一緒に出してくれる。いいですね。 - 生成された「grails-app/controllers/MemberController.groovy」を以下のように編集する。
class MemberController {
def scaffold = Member
}
生成された時には「def index = { }」があったけど、それを「def scaffold = Member」に置き換えただけ。これを書いておくと、viewを勝手に生成してくれるよぅだ。scaffoldだし。 - この状態で、$ grails run-app する。
- 起動が完了したら、ブラウザから「http://localhost:8080/studyGrails/member」を開く。すると「http://localhost:8080/studyGrails/member/list」にリダイレクトされて、空っぽのMember一覧が表示される。
- ここで[New Member]をClickすると「http://localhost:8080/studyGrails/member/create」へリダイレクトされ、Memberの編集画面となる。idフィールドが無いということは自動生成するフィールドとして自動で認識されている、といぅ事か。適当にnameとpasswordを入力して[create]ボタンをClickする。
- 「http://localhost:8080/studyGrails/member/show/1」へリダイレクトされる。なんかRESTっぽいURLの指定だ。再び「http://localhost:8080/studyGrails/member」を開いて見ると、listへリダイレクトされて入力したデータが表示されている事が確認できる。
次に、Taskを追加する。基本的にはMemberと同じ事をやるだけなので、端折って書く。
$ grails create-domain-class Task
$ grails create-controller Task
- Modelであるgrails-app/domain/Task.groovyは以下のように編集する。
class Task {
Member member
Long id
String name
}
Memberへの関連をmember_idではなく、MemberClassのオブジェクトとして定義する。ちょっとJavaっぽい。 - ただし、関連の設定はMember側にも必要なのでgrails-app/domain/MemberにhasManyの関係を指示するために以下の一行を追加する。
static hasMany = [tasks:Task]
あんまりJavaっぽくない。てっきり「List tasks」みたいな書き方を想像したのに。けど、なんかおもしろい指定方法だな。
- Controllerであるgrails-app/controllers/TaskController,groovyはさっきと同じようにscaffoldになんとかしてもらう。
class TaskController {
def scaffold = Task
}
- この状態で再び$ grails run-appして、「http://localhost:8080/studyGrails/member」を開く。
- さっき実行したときに入力したデータが消えている。orz デフォルトで使用されるHSQLDBは毎回作成されるモードが適用されているよぅだ。めげずにまたデータを入力して、Memberを登録した後の一覧画面で確認する。そこから「id」フィールドの値をClickするとMemberの詳細表示画面へ遷移する。
- そこで[Edit]をClickすると編集画面へ遷移するが、「Tasks」フィールドに「Add Task」のLinkが存在している。これは想像通り、Taskを追加する画面へ遷移するLinkで、もちろんTaskの追加ができる。
- ただし!Taskの登録画面には遷移するものの、元々のMemberのidまでは引き継がれていない。Memberの選択はComboBoxとなっているのは、Model作成時にちゃんと関連を設定しているからだが、ちょっと残念。
色々問題はあるにせよ、Grailsではこんなカンジで作成していくよぅだ。
- scaffoldを素で使用しているだけでは実用的なアプリは絶対無理。
となると、GSPというJSPのGroovy版を触っていくことになるが、それ以前にGroovyがわかってない自分には敷居が高そうだ。たぶんGrailsは使わないだろぅと思った。だが、ControllerのTestClassとかも生成されていたりするし、ControllerのTest方法が気になる。何かの参考になるかもしれんのでGrailsのTest機能も試しておく必要ありそうだ。忘れないうちに「GrailsのControllerのTestがどーなってんのか試してみる」というTaskを追加しておいた。
でも、コマンドプロンプトでctrl+c押すとgrailsが止まってMemberデータもTaskデータも消えちゃぅんですけどね。
0 件のコメント:
コメントを投稿