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 : 46
    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 ?

  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 : 46
    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...

  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 : 46
    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()...

+ 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