IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

rich:tree et reRender sous firefox 3.0


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 67
    Par défaut rich:tree et reRender sous firefox 3.0
    Bonjour,
    J'utilise RichFaces 3.3.3, et mon client est un Firefox 3.0.x (pas le choix).
    J'ai désespérément tenté de créer un arbre (jusque là, ok) dynamique (et là pas ok).
    Par exmple je veux supprimer des noeuds (menu contextuel sur click gauche) et mettre à jour un compteur de feuilles. Je pass ebien dans mes action (ou actionListener) mais après de multiples tentatives, je me suis rendu compte que c'est le reRender qui foire : voici l'erreur dans la console js de FF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error: not well-formed
    Source File: http://localhost:8280/myapp/test.jsf
    Line: 12, Column: 25
    Source Code:
    if (!params.ajaxSingle && event.ajaxSingle) {
    J'ai fait un arbre de test tout simple.
    Je suis à cours d'idées pour tenter de contourner ce pb .

    Voici des extrait du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <a4j:form>
        <rich:tree id="testTree" swichType="client" >
            <rich:recursiveTreeNodesAdaptor 
                    roots="#{myBBean.testRootNodes}" var="node" 
                    nodes="#{node.children}">
                <rich:treeNode data="#{node.id}">
                    <h:outputText value="#{node.label}"/>
                    <rich:spacer width="3px"/>
                    <h:outputText id="compteur" value="#{myBBean.debugClickCount}" />
                    <a4j:commandLink action="#{myBBean.doClick}" reRender="testTree" >
                    click me
                    </a4j:commandLink>
                </rich:treeNode>
            </rich:recursiveTreeNodesAdaptor>
        </rich:tree>
        </a4j:form>
    les classes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class TestNode
    	{
    		private String id;
    		private String label;
    		private List<TestNode> children;
    		private TestNode parent;
    ...get/setters
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public class MyBean
    {
    ...
    private TreeNode[] testRootNodes;
    private int debugClickCount = 0;
    //+get/set
    public void doClick(){debugClickCount ++;}
    ...
    private void builtTestTree()
    	{
    		this.testRootNodes = new TestNode[1];
    		TestNode rootNode = new TestNode();
    		rootNode.setId("1");
    		rootNode.setLabel("NODE id "+rootNode.getId());
     
    		List<TestNode> children = new ArrayList<TestNode>();
    		TestNode child01 = new TestNode();
    		child01.setId("1:01");
    		child01.setLabel("child "+child01.getId());
    		child01.setParent(rootNode);
    		children.add(child01);
    		TestNode child02 = new TestNode();
    		child02.setId("1:02");
    		child02.setLabel("child "+child02.getId());
    		child02.setParent(rootNode);
    		children.add(child02);
    		rootNode.setChildren(children);
    		testRootNodes[0]=rootNode;
    	}
    Et je dis que c'est le rerender du tree qui foire, car si dans reRender je met un autre composant, je n'ai pas d'erreur dans la console (mais bon, mon tree n'as rafraichit .. ce que je cherche à faire tout de même !!).

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    utilise swichType égale à ajax ou server.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 67
    Par défaut
    Malheureusement, ça ne fonctionne toujours pas même en ayant changé le switchType...

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Richfaces, lorsqu'il réalise une action Ajax, va retourner sa réponse sous forme de XML. Dans ce XML, il y a entre autres le code HTML à rafraichir.

    D'après l'erreur que tu rencontres, je dirais que dans le code HTML à rafraichir, il y a du code Javascript. Or ce dernier contient le symbole "&" qui n'est pas accepté en XML (il est contenu dans le corps de la réponse Ajax).

    J'avais rencontré ce problème, mais pas sur un arbre. C'était lié au code Javascript utilisé par JSF (de base) pour les actions. La solution pour résoudre mon problème avait été de forcer l'externalisation du code Javascript en ajoutant, dans le web.xml ce paramètre :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        <context-param>
            <param-name>com.sun.faces.externalizeJavaScript</param-name>
            <param-value>true</param-value>
        </context-param>

    A voir donc où (et pourquoi) se loge ce code Javascript dans ta réponse Ajax... L'utilisation du <a4j:logs/> peut peut-être aider ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 67
    Par défaut
    Merci pour ton explication qui me permet de mieux cerner les choses.
    En revanche, rajouter externalizeJavaScript à ma config n'a pas empeché cette satanée erreur javascript. (d'ailleurs quand je fais aficher le code source de la page, le petit bout de code js généré par RichFaces est toujours là).

    Donc j'ai re-re-regardé le reste de ma config web.xml, et en changeant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <context-param>
        <param-name>org.ajax4jsf.xmlparser.ORDER</param-name>
        <param-value>NONE,NEKO,TIDY</param-value>
     </context-param>
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <context-param>
        <param-name>org.ajax4jsf.xmlparser.ORDER</param-name>
        <param-value>NONE</param-value>
     </context-param>
    Je n'ai enfin plus ce statané pb. Maintenant, la question est savoir si c'est grace de se passer de ces parser...

  6. #6
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Et si tu ne supprimes que NEKO ? NEKO permet d'améliorer le temps de traitement des requêtes Ajax, mais en contrepartie, tu peux rencontrer certains problèmes...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

Discussions similaires

  1. Affichage parasite sous Firefox
    Par Steph4fun dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 04/02/2005, 15h05
  2. problème avec une page web sous firefox!
    Par 3psilOn dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 24/11/2004, 11h49
  3. Invité de connexion "Adserver" sous FireFox
    Par KibitO dans le forum Administration
    Réponses: 10
    Dernier message: 13/11/2004, 14h19
  4. [HTML]Image qui ne s'affiche pas sous firefox...
    Par OrangeBud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/10/2004, 13h42
  5. Java ne fonctionne pas sous Firefox
    Par Info-Rital dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 29/07/2004, 23h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo