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 :

Création dynamique d'un HtmlAjaxCommandLink -> impossible de faire fonctionner un reRender


Sujet :

JSF Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Par défaut Création dynamique d'un HtmlAjaxCommandLink -> impossible de faire fonctionner un reRender
    Bonjour,

    Je suis un peu paumé sur ce probléme.

    Voici le bout de code que j'ai dans une JSP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <a4j:commandLink ajaxSingle="true" id="editlink" action="#{offBean.doEdit}" reRender="offerOptionForm">
       <h:graphicImage value="/images/icons/edit.jpg" style="border:0" />
       <f:setPropertyActionListener value="#{off}" target="#{offBean.offer}" />
    </a4j:commandLink>
    J'essaie de faire la même opération mais dynamiquement, j'arrive à tous faire sauf l'action reRender.
    Voici le 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
    17
    18
     
    //Création de l'objet parent "HtmlAjaxCommandLink" 
    HtmlAjaxCommandLink actionCommandLink = new HtmlAjaxCommandLink();
    actionCommandLink.setId("updatelink");
    actionCommandLink.setReRender("offerOptionForm");
     
    //Création d'un objet fils "HtmlGraphicImage"
    HtmlGraphicImage actionGraphicImage = new HtmlGraphicImage();
    actionGraphicImage.setId("updatelinkImage");
    actionGraphicImage.setValue("/images/icons/update.jpg");
    actionGraphicImage.setStyle("border:0");
    actionCommandLink.getChildren().add(actionGraphicImage);
     
    //Création d'actionListener
    FacesContext facesContext =  FacesContext.getCurrentInstance();
    MethodExpression nextActionListener = facesContext.getApplication().getExpressionFactory().createMethodExpression(facesContext.getELContext(), "#{offBean.doUpdate}", null, new Class[] {ActionEvent.class});
    actionCommandLink.addActionListener(new MethodExpressionActionListener(nextActionListener));
    ...
    Merci pour ceux qui prendront la peine de trouver une solution a mon problé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
    setReRender doit marcher.
    utilise a4j:log pour voir ce qui se passe.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Par défaut
    Je ne connaissais pas <a4j:log>...

    Voila ce que j'obtiens lors de click sur le HtmlCommandLink...

    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
     
     
    debug[10:21:40,470]: search for elements by name 'script' in element form
    debug[10:21:40,470]: Scripts in updated part count : 2
    debug[10:21:40,471]: Update part of page for Id: includedView:offerOptionForm successful
    debug[10:21:40,471]: call getElementById for id= ajax-view-state
    debug[10:21:40,471]: Hidden JSF state fields: [object HTMLSpanElement]
    debug[10:21:40,471]: Namespace for hidden view-state input fields is undefined
    debug[10:21:40,471]: search for elements by name 'input' in element span
    debug[10:21:40,472]: Replace value for inputs: 26 by new values: 1
    debug[10:21:40,472]: Input in response: javax.faces.ViewState
    debug[10:21:40,472]: Found same input on page with type: hidden
    debug[10:21:40,472]: Found same input on page with type: hidden
    debug[10:21:40,473]: Found same input on page with type: hidden
    debug[10:21:40,473]: search for elements by name 'INPUT' in element span
    debug[10:21:40,473]: Replace value for inputs: 26 by new values: 0
    debug[10:21:40,474]: call getElementById for id= _A4J.AJAX.focus
    debug[10:21:40,474]: No focus information in response
    debug[10:21:40,534]: Evaluate script replaced area in document: // LOG.LEVEL = LOG.ALL; //
    debug[10:21:40,534]: Evaluate script replaced area in document: // function clear_includedView_3AofferOptionForm() { _clearJSFFormParameters('includedView:offerOptionForm','',['includedView:offerOptionForm:_link_hidden_','includedView:offerOptionForm:j_idcl']); } function clearFormHiddenParams_includedView_3AofferOptionForm(){clear_includedView_3AofferOptionForm();} function clearFormHiddenParams_includedView_offerOptionForm(){clear_includedView_3AofferOptionForm();} clear_includedView_3AofferOptionForm(); //
    debug[10:21:40,535]: call getElementById for id= org.ajax4jsf.oncomplete

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Par défaut
    Je ne sais pas pourquoi mais maintenant cela fonctionne

    Dans mon a4j:log, j'obtiens ceci :

    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
     
    debug[10:39:49,733]: search for elements by name 'script' in element form
    debug[10:39:49,733]: Scripts in updated part count : 2
    debug[10:39:49,733]: Update part of page for Id: includedView:offerOptionForm successful
    debug[10:39:49,733]: call getElementById for id= ajax-view-state
    debug[10:39:49,734]: Hidden JSF state fields: [object HTMLSpanElement]
    debug[10:39:49,734]: Namespace for hidden view-state input fields is undefined
    debug[10:39:49,734]: search for elements by name 'input' in element span
    debug[10:39:49,734]: Replace value for inputs: 26 by new values: 1
    debug[10:39:49,734]: Input in response: javax.faces.ViewState
    debug[10:39:49,735]: Found same input on page with type: hidden
    debug[10:39:49,735]: Found same input on page with type: hidden
    debug[10:39:49,735]: Found same input on page with type: hidden
    debug[10:39:49,735]: search for elements by name 'INPUT' in element span
    debug[10:39:49,736]: Replace value for inputs: 26 by new values: 0
    debug[10:39:49,736]: call getElementById for id= _A4J.AJAX.focus
    debug[10:39:49,736]: No focus information in response
    debug[10:39:49,780]: Evaluate script replaced area in document: // LOG.LEVEL = LOG.ALL; //
    debug[10:39:49,781]: Evaluate script replaced area in document: // function clear_includedView_3AofferOptionForm() { _clearJSFFormParameters('includedView:offerOptionForm','',['includedView:offerOptionForm:_link_hidden_','includedView:offerOptionForm:j_idcl']); } function clearFormHiddenParams_includedView_3AofferOptionForm(){clear_includedView_3AofferOptionForm();} function clearFormHiddenParams_includedView_offerOptionForm(){clear_includedView_3AofferOptionForm();} clear_includedView_3AofferOptionForm(); //
    debug[10:39:49,781]: call getElementById for id= org.ajax4jsf.oncomplete
    Par contre dans mon printStack, j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    22-oct.-2009 10:39:49 org.ajax4jsf.context.AjaxContextImpl convertId
    ATTENTION: Target component for id offerOptionForm not found
    Mais le reRender ce fait quand même ...
    J'ai quand même envie de ne pas avoir ce message dans mon printStack

  5. #5
    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
    Je vois:

    debug[10:39:49,733]: Update part of page for Id: includedView:offerOptionForm successful
    ton bean est dans quel scope?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Par défaut
    Elle est dans "session"

  7. #7
    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
    Citation Envoyé par Chritofff Voir le message
    Elle est dans "session"
    Le binding doit être utiliser dans un bean en scope request, c'est spécification de JSF.

    N'oublie pas

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Par défaut
    Merci à Sniper37 d'avoir prit le temps sur mon probléme.

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

Discussions similaires

  1. [Requête] Impossible de faire fonctionner !
    Par Nesta92 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/04/2007, 09h38
  2. Réponses: 5
    Dernier message: 05/12/2006, 23h57
  3. impossible de faire fonctionner le gridlayout
    Par oceane751 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 12/06/2006, 10h42
  4. Réponses: 5
    Dernier message: 22/03/2006, 10h39
  5. impossible de faire fonctionner phppgadmin et pgdmin3
    Par le_ben dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 09/12/2004, 14h27

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