[Seasar-user:13033] Re: [SAStruts]@Executeのinput属性で遷移できないケースがある

出羽 健一 [E-MAIL ADDRESS DELETED]
2008年 2月 24日 (日) 16:18:57 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}" という値を
指定できないからなのか、遷移できないという訳です。
 
試しに、confirm実行メソッドの@Executeのinput属性に"edit/1" という
ような決め打ちの値を指定すれば、一応、遷移はできました。
なので、input属性にもキレイなURLを実現するための"edit/{id}"のような
動的なパスが指定できるようになることが望ましいと考えています。
 
 
ちなみに、input属性にパラメータ指定ができるようになったら、
以下のようなコードを書くことを想定しています。
(戻り用のedid.jspを初期化するためのbackToEditメソッド作らない)
 
    public boolean postback;
 
    @Execute(validator = false, urlPattern = "edit/{id}")
    public String edit() {
        // 以下のif ブロックはedit.jspの初期化において
        // ポストバック時には呼ばない処理です。
        if(!postback) {
            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") 
    @Execute(input = "edit/{id}")
    public String confirm() {
        return "confirm.jsp";
    }

 

 以上、よろしくお願いします。
 

________________________________

From: [E-MAIL ADDRESS DELETED] 代理 YASUO HIGA
Sent: 2008/02/24 (日) 11:57
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:13032] Re: [SAStruts]@Executeのinput属性で遷移できないケースがある



ひがです。

もうちょっと具体例がないと良くわかりません。

> 出羽です。
>
> SAStrutsでバリデーションエラーになった時に、
> チュートリアルのEmployeeAction#backToEditメソッドのような
> 戻り用の画面初期化実行メソッドを作らないで
> 元の画面に遷移させる方法を模索しています。
>
> 遷移先の実行メソッドの@Executeのinput属性に
> 元の画面に遷移するように指定して、
> 遷移元の実行メソッド内でポストバックによる
> 分岐処理をすることで基本的には上手くいっています。
>
> しかし、遷移元の実行メソッドに以下のような
> urlPattern属性値のアノテーションがある場合、
> 遷移先の実行メソッドの@Executeのinput属性で
> 戻り先として指定することができません。
> ({id}の部分が動的なのが原因と思われます。)
>  @Execute(validator = false, urlPattern = "edit/{id}")
>
> 上記のケースでも遷移元に移れるようにする方法を
> 教えて頂けないでしょうか。
>
> (もし、バグの場合、input属性でurlPattern属性のような
> 指定が可能になるか、input属性を空文字か省略すること
> で元の画面に遷移するようになればいいのではないかと
> 思っています。)
>
> 以上、よろしくお願いします。
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user


-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: 無し
型:         application/ms-tnef
サイズ:     11816 バイト
説明:       無し
URL:        http://ml.seasar.org/archives/seasar-user/attachments/20080224/59f4d8de/attachment-0001.bin 


Seasar-user メーリングリストの案内