Question

J'utilise ICEfaces avec ICEpush pour transmettre certaines données au navigateur.

Cependant, cela ne fonctionne pas comme prévu :Il ne fait pas d'AJAX, il appelle simplement l'action et revient de l'action comme le fait toute autre action non-AJAX.

J'utilise les dernières versions d'ICEfaces et d'ICEpush ainsi que Tomahawk 7 et JSF 2.

Il ne fonctionne ni avec Servlet 2.5 ni avec Servlet 3.0.

Voici les parties importantes de mon bean (vue étendue) :

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);                     
    }
}

Et voici un extrait de mon formulaire :

    <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>

Ai-je manqué quelque chose?Merci!

Était-ce utile?

La solution

Icefaces 2.0 n'est pas encore intégré aux myFaces.Avez-vous essayé votre application avec les fichiers de Mojarra .jar inclus?

Autres conseils

Je suis seulement familier avec les glaces 1.8, mais il me semble que vous êtes un bouton de commande n'est pas AJAX activé.De plus, vous devez utiliser un actelistener au lieu d'une action

Vous pouvez utiliser le bouton de commande ICEFaces:

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

ou le JSF 2 AJAX Tags:

<h:commandButton id="startAjax" value="Start">
    <f:ajax listener="#{ajaxTest.addText}"/>
</h:commandButton>

Avez-vous un outil de développement capable de valider le code?Au moins sur la version Vaadin de Icepush, vous ne pouviez pas faire confiance à leurs exemples.Sur leur démo officielle, il y avait du code amorcé et sur leur chat, ils ont donné du code où les importations étaient d'une autre planète avec les bonnes.

Mon éclipse a raconté que de nombreuses importations étaient fausses et que le code avait des marques obsolètes sur certaines fonctions.Ces gars-là se développent si vite que leurs documents sont définitivement obsolètes.Donc, lisez attentivement ce que votre outil dit sur le code!

J'ai aussi le problème de l'intégration d'IceFaces (pour utiliser push) avec l'application qui utilise déjà Richfaces.Mais il est possible d'intégrer IcePush directement avec presque toutes les applications Web Java (avec Servlet Api).Vous pouvez voir plus de détails sur http://achorniy.wordpress.com/2012/02/29/icepush-integration-to-web-application/

L'idée est d'utiliser javascript-api (ou jQuery-api) fourni par IcePush.Ainsi, votre page avec javascript-api s'enregistre en tant qu'écouteur pour les notifications push et dans le rappel, vous pouvez appeler toutes les fonctions javascript pour mettre à jour votre page.Dans l'exemple Richfaces, vous pouvez utiliser ajaxUpdateFunction() qui est en fait soutenu par <a4j:jsFunction name="ajaxUpdateFunction" action="#{myBean.update} reRender="updatedComponent(s)" ajaxSingle="true"/> ou effectuez une requête ajax avec jQuery.Dans votre cas (JSF-2.0), je pense que vous pouvez appeler jsf.ajax.request(this, event, {render:'ajaxTestTable'}) pour mettre à jour ce que vous voulez (exemples http://andyschwartz.wordpress.com/2009/07/31/whats-new-in-jsf-2/)

tout ce que vous avez à faire côté serveur est d'enregistrer le servlet IcePush et d'initialiser la connexion icePush côté client avec l'API javascript.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top