menu
書いてる野郎
orebike@gmail.com
単にリクエストを受けるだけの入れ物
SAStrutsの定番の通りpublicのString型メンバを用意してうける。 簡単なバリデーションはここでアノテーションで掛けてしまう。
Serviceのメソッドに渡すために所定の型で値を取り出すfetchHogeHogeメソッドを作成する。 パラメータの数が少ないならば、全て個別に変換して渡してもよい、
beancopyなどの便利なメソッドもあるが、これは値の扱いに関してプログラマーが無責任にならないように自前でやりたいところだ。
編集系画面ではFormオブジェクトが出力も兼ねることが多いのでServiceメソッドの戻りをFormにマッピングするfillHogeHogeメソッドを作成する
単なるJavaのクラスとして作って名前を
HogehogeForm
という感じにして、ケツにFormをつけてクラス宣言する。
リクエストのパラメータと同一名称のpublicメンバを用意しておけばそこへ自動セットされる。このようなpublicなメンバをSeasar界ではプロパティとか呼んだりする。
class HogeHogeForm{ public String piyo; }
プロパティは基本的にStringで受けることになっている。 プロパティの型をListや配列にすると、同一keyのリクエストはコレクションとしてセットしてくれる。
使い方はActionに protected な ActionForm をつくって、アノテーションで印をつけるだけであとは
までを全自動で行ってくれる。
public class PiyoAction{ @ActionForm @Resource protected HogeHogeForm hogeHogeForm; }
ここでは Form クラス名の頭小文字化したメンバ名で指定すると自動的に入るのだが、SAStruts の規約で 1 Action に 1 Form というのがあるので、 Form はクラス内で一意であって、凝った名前をつける必要は実は無い。
ここで、このように name 指定してやると自在なメンバに form を DI することができる。
@ActionForm @Resource(name = "hogeHogeForm") protected HogeHogeForm f;