3

ICEpush で ICEfaces を使用して、一部のデータをブラウザーにプッシュしています。

ただし、計画どおりには機能しません。AJAX を実行せず、アクションを呼び出して、他の非 AJAX アクションと同じようにアクションから戻るだけです。

最新の ICEfaces と ICEpush バージョン、および Tomahawk 7 と JSF 2 を使用しています。

Servlet 2.5 でも Servlet 3.0 でも動作しません。

これらは私のBeanの重要な部分です(ビュースコープ):

public AjaxTest() {
    PushRenderer.addCurrentSession(PUSH_GROUP);
}

    public void addText() throws InterruptedException {
    for(int i = 0; i < 5; i++) {
        lines.add("line " + i);
        PushRenderer.render(PUSH_GROUP);
        Thread.sleep(1000);                     
    }
}

そして、これは私のフォームのスニペットです:

    <h:panelGroup>
        <h:dataTable id="ajaxTestTable" value="#{ajaxTest.lines}" var="line">
            <h:column>
                <h:outputText value="#{line}" />
            </h:column>
        </h:dataTable>
        <h:commandButton id="startAjax" value="Start"
            action="#{ajaxTest.addText}" />
    </h:panelGroup>

私は何か見落としてますか?ありがとう!

4

4 に答える 4

2

ICEfaces 2.0 はまだ MyFaces と統合されていません。含まれている Mojarra .jar ファイルを使用してアプリケーションを試しましたか?

于 2011-05-24T15:35:12.367 に答える
1

私は Icefaces 1.8 しか知りませんが、コマンド ボタンが ajax に対応していないようです。同様に、アクションの代わりに actionListener を使用する必要があります

次のいずれかの icefaces コマンド ボタンを使用できます。

<ice:commandButton id="startAjax" value="Start" 
       actionListener="#{ajaxTest.addText}"/>

または JSF 2 ajax タグ:

<h:commandButton id="startAjax" value="Start">
    <f:ajax listener="#{ajaxTest.addText}"/>
</h:commandButton>
于 2011-07-19T13:44:05.577 に答える
0

また、Richfaces を既に使用しているアプリとの IceFaces (プッシュを使用する) の統合にも問題があります。しかし、IcePush をほとんどすべての Java Web アプリケーション (サーブレット Api を使用) と直接統合することは可能です。詳細については、http://achorniy.wordpress.com/2012/02/29/icepush-integration-to-web-application/を参照してください。

アイデアは、IcePush が提供する javascript-api(または jQuery-api) を使用することです。そのため、javascript-api を使用したページは、プッシュ通知のリスナーとして登録され、コールバックで任意の JavaScript 関数を呼び出してページを更新できます。Richfaces の例では、実際にサポートされている ajaxUpdateFunction() を使用し<a4j:jsFunction name="ajaxUpdateFunction" action="#{myBean.update} reRender="updatedComponent(s)" ajaxSingle="true"/>たり、jQuery で ajax-request を実行したりできます。jsf.ajax.request(this, event, {render:'ajaxTestTable'})あなたの場合(JSF-2.0) 、必要なものを更新するために呼び出すことができると思います(例http://andyschwartz.wordpress.com/2009/07/31/whats-new-in-jsf-2/

サーバー側で行う必要があるのは、IcePush サーブレットを登録し、クライアント側で javascript API を使用して icePush 接続を初期化することだけです。

于 2012-03-02T11:31:56.143 に答える
0

コードを検証できる開発ツールはありますか? 少なくとも ICEPush の Vaadin バージョンでは、彼らの例を信頼することはできませんでした。彼らの公式デモでは非推奨のコードがあり、彼らのチャットでは正しいものを別の惑星からインポートしたコードを提供しました。

私の Eclipse は、多くのインポートが間違っていて、コードの一部の関数に非推奨のマークがあることを伝えました。そこにいるこれらの人々は非常に急速に発展しているため、ドキュメントは永久に古くなっています。したがって、ツールがコードについて何を言っているのかを注意深く読んでください!

于 2011-05-24T16:00:40.903 に答える