SAStruts/ActionForm

SAStruts/ActionForm

基本的な役割

単にリクエストを受けるだけの入れ物

設計指針

リクエスト→Actionメソッド間

SAStrutsの定番の通りpublicのString型メンバを用意してうける。 簡単なバリデーションはここでアノテーションで掛けてしまう。

Actionメソッド→Serviceメソッド引数間

Serviceのメソッドに渡すために所定の型で値を取り出すfetchHogeHogeメソッドを作成する。 パラメータの数が少ないならば、全て個別に変換して渡してもよい、

beancopyなどの便利なメソッドもあるが、これは値の扱いに関してプログラマーが無責任にならないように自前でやりたいところだ。

Serviceメソッド戻り→画面間

編集系画面ではFormオブジェクトが出力も兼ねることが多いのでServiceメソッドの戻りをFormにマッピングするfillHogeHogeメソッドを作成する

作り方

単なるJavaのクラスとして作って名前を

HogehogeForm

という感じにして、ケツにFormをつけてクラス宣言する。

リクエストのパラメータと同一名称のpublicメンバを用意しておけばそこへ自動セットされる。このようなpublicなメンバをSeasar界ではプロパティとか呼んだりする。

class HogeHogeForm{
    public String piyo;
}

プロパティの型の種類

プロパティは基本的にStringで受けることになっている。 プロパティの型をListや配列にすると、同一keyのリクエストはコレクションとしてセットしてくれる。

使い方

使い方はActionに protected な ActionForm をつくって、アノテーションで印をつけるだけであとは

  • new
  • リクエストの値のプロパティへのマッピング
  • Actionの作ったメンバへのset

までを全自動で行ってくれる。

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;

値の検証をする

関連ページ

参考サイト

Tag

java/sastruts/action_form/start.txt · 最終更新: 2020-09-30 11:43 by ore