2011-09-14 6 views
0

私は、データ取得のためのユーザ生成クエリを提出するレポートページを持っています。クエリのデータが存在しない場合、私はfacesmessage- "No data"をセッションに追加し、送信ボタンに関連付けるので、ボタンの隣に表示されます。 ユーザーがクエリを変更して再送信すると、 'no data' msgがクリアされます。私はこれを行う方法を見つけることができませんでした。私はsessionmapまたはrequestmapにメッセージを見つけることができなかったので、removemessage()を使うことができませんでした。 当分の間、私はfacesmessagesを空白の要約と詳細に設定してハックを使用しています。送信されたクエリごとにmsgをクリアするにはどうすればよいですか?JSF各リクエスト後にfacesmessageをクリアする

ありがとうございました。


BalusC、

は返信ボタンを見つけることができませんでしたので、私はオリジナルのポストに

を編集していますここで私が持っているものです。 JSF 1.2、 RichFacesの3.3

バッキング私のレポートページのbeanはsessionscopedです。ページには、レポートタイプを選択するためのドロップダウンメニューと、アクション(genrep)に接続された送信ボタンがあります。このボタンはrich:messageタグに関連付けられています。

レポートタイプを選択して送信すると、genrep()はデータベースが存在するかどうかをチェックし、存在しない場合はfacesメッセージをインスタンス化し、&サマリーを「データなし」に設定して送信しますボタンをfacecontextのaddmessageメソッドを使用して実行します。

ユーザーがデータを持つ別のクエリを送信すると、genrep()はfacescontextから応答ストリームを取得し、contentypeを "application/vnd.ms-excel"に設定してデータを書き込みます。閉じて&はストリームをフラッシュし、responsecomplete()を呼び出します。それ以外の場合は、以前のデータクエリのボタンの横に「no data」というメッセージが表示されます。

ありがとうございました。ユーザーがデータ、genrepを()のFacesContextから応答ストリームを取得している別のクエリを送信

+0

これは既定の動作です。メッセージはリクエストスコープです。テストケースに関する技術的な詳細を詳しく述べる必要があります(必要に応じてSSCCEを提供してください)。 – BalusC

+0

オリジナルの投稿が編集されました。チェックしてください。おかげさまで – pr101

答えて

0

は、contentypeへの「アプリケーション/ vnd.ms-excel」に設定し、それにデータを書き込みます。閉じて&はストリームをフラッシュし、responsecomplete()を呼び出します。それ以外の場合は、以前のデータクエリのボタンの横に「no data」というメッセージが表示されます。

したがって、ファイルのダウンロードを提供していますが、現在のページも最新の状態に更新されることを期待しています。これはHTTPの性質上可能ではありません。 1回のリクエストで2つの応答を返すことはできません(ファイルのダウンロード用と新しいページ用)。あなたができることは、クライアントに2つのリクエストを送信させるか、またはonclick属性のJavaScript行を使用してメッセージを非表示にすることです。後者はこの特定の場合により適している。

+0

メッセージを隠すjavascriptのように、msgを含む要素を無差別に隠すように見えます。それは要素が隠されていることですB4コードは、サーバーにヒットし、msgを表示するかどうかを決定する機会があります。私は理にかなっているといい。 – pr101

+0

"b4"とはどういう意味なのかよくわからない(英語を母国語ではないので、SMS /ストリート/チャット/幼稚な話に慣れていない)。しかし、私はあなたが基本的に正しいと思います。私の答えで提案したのと同じように、JSをクリックしてメッセージを隠すために使用してください。 – BalusC

+0

"b4"は "before"を意味します。コメントに文字数制限がある場合は、「SMS/street/chat/childish speak」を使用します。 – pr101

関連する問題