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