3

私はJSFの世界に不慣れです。ページにポップアップウィンドウを生成するのを手伝ってください。

これが私の要件です。ポップアップmbeanでDBから取得する必要がある詳細を含むポップアップを表示する必要がある各リンクをクリックすると、マスターページ(親)にリンクのリストが表示されます。ポップアップにはいくつかのボタンがあり、すべてのアクションに対してそれに応じて DB 操作が行われます。さまざまな方法を試しましたが、失敗しました。

私が直面している問題は、初めてポップアップをロードするとき、それがうまくいき、期待どおりに値を投影することです。しかし、init 関数で新しい値を表示するのは 2 回目で、最初のポップアップ値を表示する代わりに、画面に新しい値が表示されません。

4

7 に答える 7

1

Bean が request スコープ内にあることを確認するために、faces-config.xml ファイルをチェックしましたか?

<managed-bean-scope>request</managed-bean-scope>

Bean がセッション スコープまたはアプリケーション スコープにある場合、Bean はページを更新するたびに再作成されないため、Bean の値は変更されません。

于 2009-03-25T20:14:09.067 に答える
0

私に関連するキャッシュのようですが、以下を確認してください。

  • Beanの正しい値をデバッグして確認しましたか?
  • 値がフェッチされるのはそのBeanの形式であることを確認しましたか。
  • ブラウザが2回目にサーバーにアクセスしてもよろしいですか?; と
  • ログを解析(およびアクティブ化)して、エラーがないことを確認しましたか?
于 2009-01-13T20:29:46.687 に答える
0

それが標準のJSFかどうかはよくわかりませんが(実際にはそうではないことは確かです)、バッキングBeanに isPostBack() メソッドが必要です。これにより、ページを初めてロードしているかどうかを知ることができますまたはアクション後にリロードしています。isPostBack() メソッドを使用できれば、アクション後に変更された値を上書きすることなく、最初のページの読み込み時にのみ DB から値を読み込むことができます。

于 2009-01-13T10:45:30.907 に答える
0

それで(私があなたの問題を正しく理解していれば)問題は、Beanの変更された値が2回目にフロントエンドに到達しないことですか?

ポップアップかそうでないかでこれが変わるのにはビックリです。

いくつかの考え:

  • おそらく、このポップアップを開くと、ページにアクセスしているだけhttp://localhost:8080/myApp/myPopupURLです。
  • mbean (mbean と言うときは、正しくアクセスする Java オブジェクトを意味します#{name.javaBeanField}か?) リクエストまたはセッションのスコープはありますか?
  • この結果を得るために何をしていますか?ポップアップ リンクをクリックしてから、もう一度リンクをクリックしていますか (既に開いているポップアップが更新されることを期待していましたか)。それとも、リンクをクリックして、ポップアップを閉じて、もう一度リンクをクリックしていますか? それとも、リンクをクリックしてからポップアップを更新していますか?

現時点では JSF のセットアップは行っていませんが、もしそうなら、リンク付きの単一の JSF ページを作成してみます。そのリンクは、静的 URL を指すポップアップを開きます (上記の例のように)。静的 URL は、1 から 100 万の間の乱数である int を表示するなど、単純なことを行う非常に単純な mbean にマップされます。

それを機能させることで、少なくとも他の何かが間違っている可能性を排除できます. JSF がランダムに例外を食べたり、ページが古い値で更新されたりするという問題が発生することがあります (ライフサイクルが完了していないため)。

于 2008-12-31T04:52:52.080 に答える
0

ポップアップをどのように表示しているか、およびそれを行うために何らかの JSF コンポーネントを使用しているかどうかを知っておくと便利です。非表示の div (またはマスター ページの読み込み時に一度読み込むもの) を表示しているだけの場合は、その div を再度レンダリングしない可能性があるため、データは実現されません。

于 2009-03-26T09:56:35.733 に答える
0

MyFaces Orchestraは、すぐに使用できるマルチウィンドウ アプリケーションをサポートしています。

于 2010-01-14T14:40:20.413 に答える