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 :

Problème avec <a4j:support/>


Sujet :

JSF Java

  1. #1
    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 : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut Problème avec <a4j:support/>
    Hello,

    J'utilise RichFaces en version 3.0.1, avec Ajax4JSF en version 1.1.1, et je rencontre un problème bizarre :

    J'ai par exemple ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:inputText value="#{myBean.inputValue}">
        <a4j:support event="onchange" actionListener="#{myBean.doChangeResult}" reRender="myForm"/>
    </h:inputText>
    Comme ça, ça marche c'est impeccable.
    Maintenant, je change mon code pour ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <h:inputText value="#{myBean.inputValue}">
        <a4j:support event="onchange" actionListener="#{myBean.doChangeResult}" reRender="myForm"/>
        <my:clientValidation type="required"/>
    </h:inputText>
    Ce que fait mon composant <my:clientValidation/>, c'est d'ajouter un appel à une méthode Javascript dans le onchange du composant parent.

    Dans le HTML généré, j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="text" name="myForm:j_id580"  onchange="hideAlarm(this);A4J.AJAX.Submit('_viewRoot',null,event,{'parameters':{'j_id581':'j_id581'} ,'actionUrl':'/xxx/mytodolist.jsf'} );"/>
    Donc lorsque je modifie la valeur de ce champ, une requête AJAX est bien envoyée au serveur, mais ma méthode doChangeResult n'est pas appelée.
    En utilisant <a4j:log/> m'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    warn[14:22:59,498]: No information in  response about elements to replace

    ---

    Autre chose étrange (je trouve) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     <h:inputText value="#{myBean.inputValue}" onchange="">
         <a4j:support event="onchange" actionListener="#{myBean.doChangeResult}" reRender="myForm"/>
     </h:inputText>
    Le composant <a4j:support> n'ajoute pas son code Javascript dans le onchange du inputText.

    Avez-vous une idée de pourquoi ça ne marche pas ?
    Est-ce que cela fonctionne avec RichFaces 3.1 ?
    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

  2. #2
    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 : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Je viens de voir une autre différence au tout début des logs de <a4j:log>:

    Sur la page qui marche j'ai :

    debug[14:34:28,183]: NEW AJAX REQUEST !!! with form :myForm

    Sue la page quie ne marche pas, j'ai :

    debug[14:34:28,183]: NEW AJAX REQUEST !!! with form :null

    D'où ça peut venir qu'il ne trouve pas le formulaire ?

    Edit :
    En fait, c'est l'action Javascript onchange créé par a4j:support qui pose problème:

    J'ai:

    onchange="hideAlarm(this);;A4J.AJAX.Submit('_viewRoot',null, event,{'parameters':{'j_id582':'j_id582'} ,'actionUrl':'...'} )" />


    alors que je devrais avoir:

    onchange="hideAlarm(this);;A4J.AJAX.Submit('_viewRoot', myForm, event,{'parameters':{'myForm:j_id582':'myForm:j_id582'} ,'actionUrl':'...'} )" />

    Bon, ça ne m'explique pas pourquoi il ne trouve quand même pas le formulaire...
    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

  3. #3
    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 : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    I have résolu mon problème.

    J'ai déplacé mon code de modification des attributs onXXX du parent de mon composant de la méthode setParent() à encodeBegin().

    Ca résoud le problème, parce que le <a4j:support/> n'a visiblement pas encore recherché l'ID du form au moment où JSF exécute le setParent() sur mon composant, alors qu'il l'a trouvé quand JSF exécute le encodeBegin()...
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec la fonction Supports
    Par popo dans le forum Débuter
    Réponses: 4
    Dernier message: 18/10/2012, 18h15
  2. Problème avec a4j:support
    Par amiraprincesse dans le forum JSF
    Réponses: 4
    Dernier message: 17/07/2011, 11h06
  3. probléme avec <rich:comboBox et <a4j:support
    Par aymenroma dans le forum JSF
    Réponses: 5
    Dernier message: 10/06/2009, 15h02
  4. ajax4jsf: problème avec <a4j:include>
    Par heureuxLesOublieux dans le forum JSF
    Réponses: 3
    Dernier message: 18/06/2007, 10h30
  5. Problème avec la fonction Supports
    Par rsc dans le forum Langage
    Réponses: 6
    Dernier message: 23/09/2005, 08h07

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