1

ページの読み込み時にデータベースからの情報を表示する必要がある動的 Facelets ページがあります。フローのこの時点では、フォームの送信はありません。私が見つけることができるすべての JSF の例は、次のページに動的な結果を伴うフォーム送信のみを示しています。

現在、データベースに対して行うすべての呼び出しは、フォームの送信によってアクションがトリガーされた後に行われます。フォームが送信されていない場合、このコードはどこに行くべきですか? また、どのようにトリガーしますか? コード スニペットは本当に役に立ちます。

4

3 に答える 3

2

マネージド Bean のコンストラクターで (またはアクセサーの 1 つで遅延して) 初期化作業を実行できるはずです。

于 2008-10-31T09:49:08.793 に答える
1

Spring 統合(こちらも参照)を使用している場合は、簡単です。

バッキング Bean では、次のようなものを使用するだけです。

public class BackingBean implements InitializingBean
{
    public void afterPropertiesSet()
    {
        loadInitialData();
    }
}

Spring と統合しない場合は、次の 2 つのオプションがあります。

  1. クラス コンストラクターに初期データをロードします。
  2. faces-config.xmlで、注入するプロパティを設定できます。プロパティは、構成ファイルで指定された順序で設定されることが保証されています。したがって、ダミーのプロパティを作成し、そのメソッド内でデフォルト データをロードします。つまり、メソッドpublic void setLoaded(boolean loaded) { loadInitialData(); }を作成し、faces-config.xml で、そのバッキング Bean のプロパティとして「loaded」を設定します。

これがすべて明確であることを願っています!

于 2008-10-31T09:19:12.113 に答える
0

あなたは書く(私の強調を加えて):

私がデータベースに対して行うすべての呼び出しは、現在、フォームの送信によってアクションがトリガーされた後に行われます。フォームの送信がない場合、このコードはどこに移動する必要がありますか?また、どのようにトリガーしますか?コードスニペットは本当に役に立ちます!

フォームを送信するにデータベースから情報を取得したいようです。

データベースをクエリするためにAjax呼び出しを行いたいようです。Ajax呼び出しは、フォーム送信イベントとは異なるイベントで発生する可能性があります。これには、FacesフレームワークではなくJavascriptを使用する必要があります。

于 2008-10-31T03:09:22.437 に答える