[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 メーリングリストの案内