struts2において、フォームの値を入れ子構造の配列で受け取る際の小技

2010/04/23 17:29

Javaのフレームワークstruts2を利用した開発において、

フォームの値をプログラムで取得する際は、getModel()でフォームの値をマッピングした型を返すパターンが多いと思います。

この場合で配列を利用する際は、

【HTML】

--------------------------------------------------------------

<input type="text" name="model[0].name">

<input type="text" name="model[0].link">

<input type="text" name="model[1].name">

<input type="text" name="model[1].link">

<input type="text" name="model[2].name">

<input type="text" name="model[2].link">

--------------------------------------------------------------

【Java】

--------------------------------------------------------------

アクション

・・・

private List<HogeForm> hogeForm = new ArrayList<HogeForm>();

@Element( value = HogeForm.class )

public Object getModel() {

    return hogeForm;

}

・・・

※ HogeFormクラスにはname, linkのメンバ変数を用意

--------------------------------------------------------------

みたいな感じでアノテーション@Element( value = HogeForm.class ) を利用することで、階層を浅くする事ができるのですが、あまり知られていない様です。

現場でよくみかけるのは下記の様なソースです。

【HTML】

--------------------------------------------------------------

<input type="text" name="hogeListForm.form[0].name">

<input type="text" name="hogeListForm.form[0].link">

<input type="text" name="hogeListForm.form[1].name">

<input type="text" name="hogeListForm.form[1].link">

<input type="text" name="hogeListForm.form[2].name">

<input type="text" name="hogeListForm.form[2].link">

--------------------------------------------------------------

【Java】

--------------------------------------------------------------

アクション

・・・

private HogeListForm hogeListForm = new HogeListForm();

public Object getModel() {

    return hogeListForm;

}

・・・

※   HogeListFormクラスにはFormクラス型のリストのメンバ変数を用意、Formクラスにはname, linkのメンバ変数を用意

--------------------------------------------------------------

是非、アノテーション@Elementを使用してみて下さい。

コメントを書く




biuquote
  • コメント
  • プレビュー
Loading