[Seasar-user:13056] Re: [SAStruts]@Execute のinput属性で遷移できないケースがある
Yasuo Higa
[E-MAIL ADDRESS DELETED]
2008年 2月 25日 (月) 19:36:32 JST
ひがです。
>
> 出羽です。
>
> > もうちょっと具体例がないと良くわかりません。
>
> 失礼しました。具体例を使って説明させていただきます。
>
>
> 以下は、SASturtsチュートリアルのEmployeeActionクラスを
> 一部抜粋したコードです。
>
> @Execute(validator = false, urlPattern = "edit/{id}")
> public String edit() {
> Employee emp = jdbcManager
> .from(Employee.class)
> .id(id)
> .getSingleResult();
> Beans.copy(emp, this).execute();
> deptItems = jdbcManager
> .from(Department.class)
> .orderBy("id")
> .getResultList();
> return "edit.jsp";
> }
>
>
> @Execute(input = "backToEdit")
> public String confirm() {
> return "confirm.jsp";
> }
>
>
> 現状ではedit.jsp でデータ入力後、confirmメソッドに対して
> サブミットする際にバリデーションエラーになれば、
> "backToEdit" に遷移するように指定されています。
>
> これをバリデーションエラー時に backToEdit ではなく、
> edit実行メソッドに遷移させたいのです。しかしながら、
> edit実行メソッドには"edit/{id}"のurlPattern が指定されているのですが、
> confirm実行メソッドの@Executeのinput属性に"edit/{id}" という値を
> 指定できないからなのか、遷移できないという訳です。
>
対応しました。
https://www.seasar.org/issues/browse/SASTRUTS-26
ただし、上記の例で、nameの項目を入力せずにサブミットすると
edit()に遷移しますが、nameプロパティがnameカラムの値で
上書きされて、入力値(空白)が元(nameカラムの値)に
戻ってしまいますね。
エラーのメッセージがリクエストに設定されているかで、
条件分岐しても良いけど、それだったら、素直にbackToEdit()に
遷移したほうがよさげ。
Seasar-user メーリングリストの案内