0

解決するのは簡単なアイデアですが、私はこれまでに解決したことがなく、アドバイスが必要です。私はPrimefacesでSpring、Spring Webflow、JSFを使用しています。

外部Webサービスを使用して、テーブル内のいくつかのデータをフェッチします。時々それはウェブサイトの呼び出しよりも遅く動作していて、私はロードを「待つ」ことを避けたいです。私の考え(これは新しいことではありません)は、すべての静的(またはローカルサーバー)コンテンツを含むページをロードしてから、外部Webサービスを呼び出してデータをフェッチすることです。終わったら表示するより。

これまでのところ、次のようになります。

Webサイト:

<p:dataTable id="table" var="item" value="#{lastfm.topArtists}">
                    <p:column headerText="Model" sortBy="#{item.name}">
                        <h:outputText value="#{item.name}" />
                    </p:column>
</p:dataTable>

そしてBean自体はその正義です:

private List<Artist> topArtists = new ArrayList<Artist>();
public void init(String u) {
    topArtists = (List<Artist>) User.getTopArtists(u, StaticContent.api_key);
}

ユーザー-はWebサービスAPIです。

ATMon-renderはWebサイトのロードを初期化しますが、それを避け、ページのロード後に何らかの方法で呼び出し、成功時に表示したいと思います。

onDocumentReady()私はそれがajaxを使用し、ajaxを使用するjqueryを使用したjavascript関数である可能性があると onSuccess思いますが、実際にはそれを接続する方法がわかりません。

ありがとう!

4

1 に答える 1

1

プライムフェイスのポーリングコンポーネントは、これを達成するのに役立つ場合があります。

http://www.primefaces.org/showcase-labs/ui/poll.jsf

<h:form id="form">  
<p:poll interval="3"   
        listener="#{lastfm.topArtistsRetrieved}" update="table" />  

<p:dataTable id="table" var="item" value="#{lastfm.topArtists}">
                <p:column headerText="Model" sortBy="#{item.name}">
                    <h:outputText value="#{item.name}" />
                </p:column>
</p:dataTable>
</h:form>

User.getTopAristsが終了時に通知すると思います。基本的に、プロセスが終了したかどうかを示すフラグが必要です。また、素顔のポーリングを通じて、フラグが立てられているかどうかを確認し、ajaxの更新を通じて、準備ができたら結果を印刷する必要があります。このフローを通じて、プロセスの進行状況を表示することもできます。

于 2013-01-03T18:05:06.743 に答える