2

VisualforceでGoogleのようなアプリケーションを作成しています。ユーザーが検索語を入力し、[検索]をクリックすると、検索ボックスの下に結果が表示されます。この一環として、ユーザーが[検索]をクリックすると、検索の進行中に「読み込み中...」と表示されるようにactionStatusが設定されます。

<apex:commandButton value="Search" action="{!runQuery}" status="loading"/>

今、私は最初の検索のために、入力フィールドと検索ボタンを備えたページであるランディングページを設定しようとしています。Googleスタイルでは、最初の検索でユーザーは検索ボックスを上に移動して結果が表示されるページに移動します。

問題は、ページの読み込み時にactionStatusを呼び出す方法がわからないことです。ユーザーがボタンをクリックするのは簡単ですが、ランディングページから検索すると、新しいページが読み込まれ検索が実行されます。現時点では、コントローラーのコンストラクターでパラメーターをチェックし、パラメーターが見つかった場合はrunQuery()手動で呼び出していますが、これはページの読み込み時間を遅らせるだけで、actionStatusを呼び出しません。

何か案は?

4

2 に答える 2

2

使用する

<apex:actionFunction name="runQueryJS" action="{!runQuery}" status="loading" />

クライアント側の呼び出しポイントを作成するには、bodyのロードされたイベント(またはクエリを実行する他の場所)にハンドラーをアタッチします。このハンドラーは、runQueryJS()検索のためにAjax呼び出しを行うjavascript関数を呼び出します。

于 2012-04-26T21:24:06.820 に答える
1

apex:pageonLoad イベント呼び出しの追加は機能しませんでしたが、これをページの最後、終了タグの直前に配置すると、表示されます。理由は完全にはわかりませんが、きれいで、仕事を成し遂げます。

<script>
    runQuery();
</script>
于 2012-04-30T20:25:07.883 に答える