[Seasar-user:17234] Re: [SAStruts]Listの保持方法
Takafumi Yoshida
[E-MAIL ADDRESS DELETED]
2009年 4月 9日 (木) 10:10:49 JST
いつもお世話になります。吉田@オプティクスです。
2009/04/08 20:28 Kenji Yamaguchi <[E-MAIL ADDRESS DELETED]>:
> SAStrutsで、従業員マスタのようなものを作ろうとしています。
> 従業員マスタ画面の中には自分の部署を選択するような部署の
> プルダウンがあるようなものを想定しています。
>
> このような画面を作成する場合、部署の一覧はどのタイミングで
> 取得して、どのように保持しておけばよいのでしょうか?
> TeedaだとxxxItemsをBase64エンコードして保持するような
> itemsSaveみたいなものがありましたが、そのような考え方はあるのでしょうか?
> SAStrutsではSession保持でしょうか?
>
> Scaffoldで作成された画面をベースにEmployeeDtoを作って
> その中に下記のプロパティを持ってSerializableしました。
> public List<Dept> deptItems;
>
> このDtoを使って画面を作成した場合、1度目は正常に動くが、
> バリデータで再描画された場合に下記エラーがでてしまいました。
> HTTPステータス 500 - パス /employee に対するアクションのインスタンスがありません
validate失敗時にinputで指定された画面に遷移した際に
> public List<Dept> deptItems;
の中身がnullのためにエラーになっていませんか?
validate時の戻り先を@executeアノテーションで指定していると思いますが
自分の場合は、戻り先をhtmlではなくメソッドを指定し、Action経由でhtmlで戻るように
しています。具体的には、Actionで
protected void initList() {
//select用のリストに値を準備..
}
@Execute(validator = false)
public void init() {
initList();
return "input.html";
}
@Execute(input = "init")
public String submit() {
//validate成功後の処理
}
といった感じです。submitメソッドのinput先をメソッド名にするのがミソです:-)
> HotDeployではなくCooldeployにすると思っていたように動きました。
> ここまでで何か間違えているのでしょうか・
> 動きが違うのは何故なのでしょうか?
ここはちょっとよくわかりませんが、Serializableと関連してるかも。
> Scaffoldで作成された画面をベースにEmployeeDtoを作って
> その中に下記のプロパティを持ってSerializableしました。
> public List<Dept> deptItems;
とありますが、DeptはSerializableする必要はないように思います。
Seasar-user メーリングリストの案内