Strutsの要素技術の基本的構造の話
前回までで、基本的なファイルは書いたので、今回から、細かいテクニック的な話。
まずは、複数ボタンの処理について。
■複数ボタンの処理とは
複数ボタンの処理というのは、

のように、複数のボタン(ここでは、足すと引く)が1画面にあり、
足すを押されると

引くを押されると

のように、処理を分けたいケースのこと。
■何が問題なのか?
strutsでなければ、これは、ボタンを、あるForm内に、submitボタンでつくり、その場合、nameを一致させて、ボタンのvalueをかえることによって、処理を切り分ける。
Strutsの場合、Formが同じで、submitボタンが複数あり、propertyが同じ場合、同じActionが呼び出されるが、そのとき、もしボタンが英語ならば、DispatchActionを使えば(ActionのかわりにDispatchActionを継承すれば)そのボタンのvalueに設定した値(この値でボタンが表示されている)がメソッドとなり、呼び出される。
つまり、value=updateなら、updateとボタンが見えて、それをクリックすれば、updateというメソッドが呼び出される。
ところが、日本の場合、ボタンは日本語になる。
しかし、日本語のメソッドをJavaで作ることが出来ない(そーいうjavaの規約)。なので、この方法は使えない。
そこで、LookupDispatchActionを使って、表示内容とメソッドの対応を作ってやる
・・・という方法が本などでは書かれているが、
これが(後日書くけど)めんどっちいいのだ・・・
■実は、複数ボタンの処理は、3通りある。
実は、複数ボタンの処理方法は、
(1)submitのname(property)を変えてしまい、値が入ってくるかどうかで見る
(2)javascriptを使って、Action等を切り替える
(3)LookupDispatchActionを使う
の3通りどれでも出来る。
このうち、(3)が、一番複雑で面倒だ(だが、これがよく紹介されている)。
ということで、次回から、この(1)、(2)、(3)をそれぞれ、サンプルを挙げてみてみる。