8.新規登録してみます。
メニューバーのNew Itemをクリックすると、新規登録ページが開きます。
適当に入れてCreateボタンをクリックすれば登録完了のページが表示されます。
※priceは入れないと、nullは許してないよ、っていわれますのでそれは後述参照で。
9.登録データの表示画面でEditをクリックすれば、再編集ページになります。
ここで編集してupdateボタンをクリックすれば、データは更新されます。deleteをクリックすればデータは削除されます。メニューバーのItemListをクリックすれば、登録したデータがリスト表示されます。デフォルトでは11件以上のデータを登録すると次ページに飛べるようなページネイトが表示されます。
ちなみにリストの各ヘッダをクリックすると、昇順降順がソートされます。
下記は、priceをソートしたところ。
ここまでで商品データの登録、確認、再編集、更新、削除、リスト表示が確認できます。
で、大抵この辺までで、最速なら5分ぐらいでいけるはず。
お客さんの反応は、まだ「へー」ぐらい。ここで乗ってくるのは、プログラムに興味がある人ぐらい。
「あのさ、エクセルのとき、名前は入力してないといけないとか、やってたな。
あと、1万円以上の商品は無いんだよね、まえ間違えちゃって怒られたよ業者にさ。
ああ、でも決まってないときもあるなあ。。。
それとこのSpecってのは、もっとたくさん文字はいるよ、こんなんじゃ収まらないねえ。」
10.次にバリデーション(フィールドの制約)を付けてみます。
nameは、商品名なので必須にします。
ドメインクラスのItem.groovyを開いて、constraintsを追加します。
class Item {
String name
String spec
Long price
Date release
static constraints = {
name(blank:false) //必須入力
spec(maxSize:4000) //textareaになる
price(max:10000L,nullable:true) //10001以上はだめだよ,nullでもいいよ
release()
}
}
ちなみに、このconstraintsに書いたフィールドの順番で、scafflodされたViewの中の表示・入力の順番が変わります。何も書いていないと、フィールド名のアルファベット順(name→price→release→spec)になります。
priceは、Integerにしてあると、10000だけで良いようです。Longだと10000Lと、明示してあげないといけないようです。
「この日付のとこさ、年月とか逆になってるよ。」
「それ後でやりまーす。その前に、商品って自社もあるけど、業者さんのもありますよね」
「ああ、そうそう。100社あるかないかぐらいだね。そうだよ、そこがパスワードかかってて変えられないんだよ、失礼なこった。」
11.製造元をComanyとしてドメインクラスを作ります。
$ grails create-domain-class company
12.会社名と、備考欄ぐらいの簡単なフィールドと、商品(Item)との関連付けを定義します。
折角なので、会社名は必須に、備考はテキストエリアにしてみます。
class Company {
static hasMany = [items:Item]
String name
String note
static constraints = {
name(blank:false)
note(maxSize:4000)
}
}
hasMany = [items:Item]とすることで、Companyには、itemsとして、Itemがいくつかぶら下がってますよ、ということになります。
13.商品(Item)にも、その関連付けを定義します。
Item.groovyに2行追加します。
class Item {
static belongsTo = [company:Company] //追加
String name
String spec
Long price
Date release
static constraints = {
name(blank:false)
spec(maxSize:4000)
price(max:10000L)
company() //追加
release()
}
}
同じ商品を、違う業者が製造していることはないので、1対多になります。
おっしゃ、ちょっとここまでで3分ぐらい経過しているかもしれないので、お客さんは「?」になります。そうならないように、「しゃべり」をこの辺で入れるのも大事です。
これで製造元の登録を見せよう、と思っても、ちょっとまった。
多分後ろから須江さんが「…Controllerが無いよ」とささやいてくれますので、落ち着いて次の行動に。
14.Companyコントローラーを作成し、Itemのときと同じようにscaffoldを定義します。
$ grails create-cotroller company
class CompanyController {
def scaffold = true
}
15.今まで作ったItemとCompanyがどんな感じになっているか、ここまでの動作を確認してみます。
もう一回run-appして、ブラウザを確認すると、新しいコントローラー(CompanyController)が出来ています。
16.製造元の会社を登録してみます。
CompanyControllerをクリックして、New Companyをクリックすると、新規登録画面が表示されます。
17.Createボタンで登録され、Show画面(登録した内容の表示画面)に切り替わります。
18.Editボタンをクリックしてください。編集画面が表示されますが、その中のItemsのところに、「Add Item」というリンクボタンが表示されています。
19.Add Itemをクリックすると、Itemの新規登録ページに切り替わります。
20.Createボタンをクリックして登録すると、Show画面になります。
21.ここにある「Company:1」をクリックすると、CompanyのID:1のShow画面になります。
ここで、「Company:1」に、「Item:1」がちゃんとぶら下がりました。
下は、Editボタンをクリックしたところです。
その3へ続く。。。
0 件のコメント:
コメントを投稿