[Seasar-user:13857] Re: [Teeda]CGIからのデータ受け渡し

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 4月 21日 (月) 16:30:08 JST


小林 (koichik) です.

Date:    Mon, 21 Apr 2008 15:52:35 +0900
From:    fujihara <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:13854] Re: [Teeda]CGIからのデータ受け渡し

> でもメソッドがPOSTなのですがこの場合
> 面倒なことになるって書かれていますが
> どの様に実装をするべきなのでしょうか?

以下のドキュメントに書いてあるように,
Teeda では POST メソッドはポストバックでのみ
使用します.

http://teeda.seasar.org/ja/extension/concept/page.html#ポストバック

そのため,CGI から POST メソッドでリクエスト
されてもポストバック扱いとなり,バリデーションが
行われたり,initialize() メソッドが呼ばれなかったり
します.

そこで,なんらかの方法でリダイレクトして
GET メソッドのリクエストで画面を表示する必要が
あります.

Filter を使う手もありますが,以下のように Page クラスと
HTML を 2 組使ってもいいかもしれません.
# 試してませんが.

まず,CGI からリクエストを受け取る画面ですが,
HTML は以下のように空で構わないはず.

<html>
<head></head>
<body></body>
</html>

Page クラスはパラメータ名と同じ名前の
プロパティを持ち,prerender() メソッドで
実際に表示する画面にリダイレクトします.

public class XxxPage {
  public String NAMC;
  public String APKD;
  ...

  public Class prerender() {
    return YyyPage.class;
  }
}

XxxPage にはバリデーション用のアノテーションを
指定しないようにしてください.

実際に表示する画面は普通に作成します.

public class YyyPage {
  public String NAMC;
  public String APKD;
  ...
}

CGI でリクエストされる Page クラスと
同じ名前のプロパティは引き継がれるので,
CGI からのパラメータを受け取ることが
できると思います.




-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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