[Seasar-user:10197] Re: [Teeda]FacesMessageの次画面引継ぎについて

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 8月 29日 (水) 23:30:26 JST


米林です。

大谷さんの説明に少し補足します。

doメソッドでnullを返す場合は forward
String, classを返す場合は redirect
という動きになります。

FacesContextはJSFの核の部分であり
これはリクエスト毎に生成されます。
つまりリクエスト毎に生成されるFacesContextに
メッセージを追加した場合、異なるリクエストでは
メッセージを引き継げません。
# 新しいリクエストで生成されたFacesContextには
# メッセージが無いので

ですので対処方法としては
PageのプロパティにerrorMessageIdを用意して
異なるリクエストでも値を引き継ぐようにして
次Pageのinitializeメソッドで

if (this.errorMessage != null) {
  FacesMessageUtil.addErrorMessage(errorMessage, null);
}

とする事などが考えられます。
もしくはエラーメッセージ自体をプロパティに保持して
別ページにも引き継ぐようにする等。

ちょっとこの辺の動きは、複雑なのでnullを返せば引き継がれて
null以外だとNGになる事に疑問を持つのは仕方ないですね。
ドキュメントに明記しなければ...

----- Original Message ----- 
From: "Shinpei Ohtani" <[E-MAIL ADDRESS DELETED]>
Sent: Wednesday, August 29, 2007 10:58 PM

> 大谷です.
>
> 基本的にPageにプロパティが無いので引き継ぐことは
> 出来ません.
> 遷移前の画面に記述するよりは、遷移後の画面の
> initalizeメソッドなどで表示させるのはどうでしょうか.
> よろしくお願いします.
>
> 07/08/29 に 磯田浩靖<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > はじめまして、isoと申します。
> >
> > S2 + Teedaにて、現在開発を行っていますが、メッセージの引継ぎにて
> > わからない点があります。
> > 別画面にFacesMessageの引継ぎをすることは可能でしょうか。
> >
> >
> > ●目的
> > FacesMessageを別画面に引き継ぎたい。
> >
> > ●バージョン
> > S2      : 2.4.17
> > Teeda   : 1.0.10
> >
> >
> > ●確認した現象
> > FacesContextにメッセージを追加した際に、
> > doXXXのreturnが「null」の場合はエラーメッセージが画面に表示されるが、
> > doXXXのreturnにPageクラスやページ名(自ページ、他ページ問わず)を指定する
と、
> > 画面にエラーメッセージが表示されない。

---
米林 正明
[E-MAIL ADDRESS DELETED]




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