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 :

Masquer / Afficher panelGrid dans ModalPanel


Sujet :

JSF Java

  1. #21
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    Après avoir consulté la doc du composant "<a4j:log/>", je me rend compte que je devrais avoir une pop-up ...

    Dans le doute, je l'ai précisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a4j:log popup="true" level="ALL"/>
    Cependant, rien ne s'affiche et on passe directement à l'erreur de pointeur null.

  2. #22
    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
    et ça te pose pas problème ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <t:graphicImage value="../images/logo_retaille.jpg" border="0" />
    alors que t n'est pas déclaré?

  3. #23
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    Cette image s'affiche sans aucun problème oui.

    D'ailleurs "t" est déclaré quasiment au tout début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uri="http://myfaces.apache.org/tomahawk" prefix="t"
    Cependant, je remarque que c'est déclaré à l'arrache ... (purée, vive les projets qu'on reprend ... )
    J'ai groupé toutes les déclarations pour que ce soit plus lisible.

  4. #24
    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
    essaye a4j:log dans la page, pas dans la modalPanel,

    tu déclare comment la variable booléene..?

  5. #25
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    Alors, pour la déclaration de la variable booléenne :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    public class ManageUserBean extends User implements Serializable{
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private List<User> users;
    	private DataContext context;
    	private Log log;
     
    	// Attribut définissant si l'on supprime ou non les fichiers de
    	// l'utilisateur à supprimer
    	private boolean deleteFiles;
    	// Attribut définissant si l'on supprime un répertoire même s'il contient
    	// des fichiers ou dossiers d'autres utilisateurs que celui à supprimer
    	private boolean forceDeleteFolders;
     
    	public List<User> getUsers() {
    		return users;
    	}
     
    	public void setUsers(List<User> users) {
    		this.users = users;
    	}
     
    	public ManageUserBean() {
    		context = Utils.getDataContext();
    		log = LogFactory.getLog(ManageUserBean.class);
    		updateUsersList();
    		this.deleteFiles = false;
    		this.forceDeleteFolders = false;
    	}
     
    	/**
             * Renvoi la valeur de deleteFiles
             * @return deleteFiles
             */
     
    	public boolean getDeleteFiles() {
    		return this.deleteFiles;
    	}
     
    	/**
             * Change la valeur de deleteFiles pour celle entrée en paramètre
             * @param deleteFiles
             */
    	public void setDeleteFiles(boolean deleteFiles) {
    		this.deleteFiles = deleteFiles;
    	}
     
    	[ .... ]
    }
    Je test de suite en mettant le a4j:log hors du modalPanel !

  6. #26
    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
    petit problème, le getter d'un booléen n'est pas getXxxx mais isXxxx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public boolean isDeleteFiles() {
    		return this.deleteFiles;
    	}

  7. #27
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    Ah ? Ben je ne savais pas du tout ...
    Je suis pourtant certain que ça fonctionne avec "get[x]" car au début j'avais initialisé le booleen à "true", et la case était bien coché par défaut (donc il parvenait à récupérer la valeur).

    Ceci dit, si c'est la norme, je m'en vais changer cela !

    Pour le <a4j:log/>, rien à faire ... Je l'ai mis hors du modalPanel, mais dans l'onglet correspondant -> néant. Je l'ai mis hors du modalPanel, juste après f:fiew -> néant ... C'est à n'y rien comprendre.

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

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Le <a4j:log popup="true"/> ne s'affiche que si tu fais la combinaison de touches Ctrl+Shift+L...
    Sinon, tu peux mettre popup="false" si c'est juste pour tester (ça cassera un peu la présentation, mais une fois le problème réglé, tu l'enlèves)...
    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

  9. #29
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    Merci romaintaz, c'est tout à fait ça !

    Ceci dit, le fait que ce soit affiché dans ma page n'est pas super pratique car ça disparait dès que la page d'erreur arrive !

    J'vais essayer le coup de la pop-up histoire de pouvoir lire ces logs quand même.

  10. #30
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    Alors la combinaison Ctrl + Shift + L ne semble pas fonctionner ... En tout cas, je ne parviens pas à retrouver mes petits comme on dit.

    J'ai donc fait le coup du "j'suis plus rapide que toi" en copiant rapidement le contenu des logs affichés dans mon "ModalPanel" avant que ce dernier ne disparaisse sous l'emprise du "NullPointerException".


    Voici ce que ça donne :
    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
    30
    debug[10:40:11,698]: Have Event [object Object] with properties: target: [object HTMLInputElement], srcElement: undefined, type: click
    debug[10:40:11,698]: NEW AJAX REQUEST !!! with form :j_id_jsp_871815094_93
    debug[10:40:11,699]: Append hidden control j_id_jsp_871815094_93_SUBMIT with value [1] and value attribute [1]
    debug[10:40:11,699]: Append hidden control javax.faces.ViewState with value [eW8P9DPtx4GjyIs0TG+f9tU5DD84/ZcmbNbSp0TJ+fPsxHB5Qx3zr1ovTnFGZfrxy6nlOpeWBzrUQs/M+KTxgB5j6BTmrAs0eFGZinABcoE=] and value attribute [eW8P9DPtx4GjyIs0TG+f9tU5DD84/ZcmbNbSp0TJ+fPsxHB5Qx3zr1ovTnFGZfrxy6nlOpeWBzrUQs/M+KTxgB5j6BTmrAs0eFGZinABcoE=]
    debug[10:40:11,700]: parameter j_id_jsp_871815094_93:j_id_jsp_871815094_96 with value j_id_jsp_871815094_93:j_id_jsp_871815094_96
    debug[10:40:11,700]: parameter ajaxSingle with value j_id_jsp_871815094_93:supprFiles
    debug[10:40:11,700]: Start XmlHttpRequest
    debug[10:40:11,701]: Reqest state : 1
    debug[10:40:11,701]: QueryString: AJAXREQUEST=j_id_jsp_871815094_0&j_id_jsp_871815094_93_SUBMIT=1&javax.faces.ViewState=eW8P9DPtx4GjyIs0TG%2Bf9tU5DD84%2FZcmbNbSp0TJ%2BfPsxHB5Qx3zr1ovTnFGZfrxy6nlOpeWBzrUQs%2FM%2BKTxgB5j6BTmrAs0eFGZinABcoE%3D&j_id_jsp_871815094_93%3AsupprFiles=true&j_id_jsp_871815094_93%3Aj_id_jsp_871815094_96=j_id_jsp_871815094_93%3Aj_id_jsp_871815094_96&ajaxSingle=j_id_jsp_871815094_93%3AsupprFiles&
    debug[10:40:11,702]: Reqest state : 1
    debug[10:40:13,592]: Reqest state : 2
    debug[10:40:13,593]: Reqest state : 3
    debug[10:40:13,595]: Reqest state : 3
    debug[10:40:13,596]: Reqest state : 3
    debug[10:40:13,597]: Reqest state : 3
    debug[10:40:13,597]: Reqest state : 3
    debug[10:40:13,598]: Reqest state : 3
    debug[10:40:13,599]: Reqest state : 3
    debug[10:40:13,600]: Reqest state : 3
    debug[10:40:13,600]: Reqest state : 3
    debug[10:40:13,601]: Reqest state : 3
    debug[10:40:13,601]: Reqest state : 4
    debug[10:40:13,602]: Reqest end with state 4
    debug[10:40:13,602]: Response with content-type: text/html;charset=UTF-8
    debug[10:40:13,603]: Full response content: 
    debug[10:40:13,606]: Header Ajax-Response not found, search in <meta>
    debug[10:40:13,606]: Header Ajax-Expired not found, search in <meta>
    warn[10:40:13,607]: No ajax response header
    debug[10:40:13,607]: Header Location not found, search in <meta>
    debug[10:40:13,607]: replace all page content with response
    Je dois avouer que cela ne me parle pas beaucoup ... Et il a même écrit le code de la page dans une ligne de log ... Je l'ai donc supprimé pour que le poste loge sur le forum. Si besoin, je peux le poster à part.

  11. #31
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a4j:log popup="false"/>
    et le nullPointerException ne te donne pas la trace de la cause de l'exception?

  12. #32
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    C'est ce que j'ai fais oui. J'ai utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a4j:log popup="false" level="ALL" style="width: 400px; height: 200px;" />
    Seul hic : ça apparait dans la page elle-même, et plus précisément dans le ModalPanel. Aussi, dès que l'erreur survient, on arrive sur la page d'erreur de MyFaces, ce qui rend illisible l'ensemble des logs ajax ...

    Pour la trace, rien de plus que celle donnée en début de sujet.

  13. #33
    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 ne vois aucun probleme dans le code, l'erreur vient peut etre d'un autre composant, je ne sais pas ce qui change pour le reRender
    essaye de gerer ça:
    2009-06-17 15:53:11,972 ERROR [http-8080-2] (TreeBean.java:432) - Erreur dans la récuperation du romain.File pour affichage du treeivew :java.lang.NullPointerException
    2009-06-17 15:53:11,972 ERROR [http-8080-2] (TreeBean.java:432) - Erreur dans la récuperation du romain.File pour affichage du treeivew :java.lang.NullPointerException
    2009-06-17 15:53:11,972 ERROR [http-8080-2] (TreeBean.java:432) - Erreur dans la récuperation du romain.File pour affichage du treeivew :java.lang.NullPointerException
    2009-06-17 15:53:11,987 ERROR [http-8080-2] (_ErrorPageWriter.java:460) - An exception occurred
    teste le code du booleanCheckBox et le reRender dans une page où y'a rien d'autre..pour etre sur que çe ne vient pas de là..

  14. #34
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    Merci de ton aide.

    Je travail en effet sur ces erreurs provenant de "Treebean.java".

    J'ai mis en mode debug pour regarder quand s'effectuent les passages dans la méthode incriminée qui s'appelle "getUsersLastDownloadsOfRomainFile()" (purée de nom ... j'sens qu'il va me falloir revoir ça).

    On y effectue de nombreux passages, et je n'arrive pas à savoir pour quelles raisons.

    En effet, cette m'éthode n'est jamais appelé dans mon code ... Ou alors eclipse ne le trouve pas (j'ai fais "Open call hieararchy" pour savoir où cette méthode pouvait bien être appelée, puis j'ai fais une recherche dans tous les fichiers du projet du terme "getUsersLastDownloadsOfRomainFile").

    J'commence à me dire qu'il y a un truc qui m'échappe totalement.

  15. #35
    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
    elle peut être appelé plusieurs fois si dans la page il y'a un binding sur la propriété usersLastDownloadsOfRomainFile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:outputText value="#{bean.usersLastDownloadsOfRomainFile}" />

  16. #36
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    Bien vu ! Et justement, un collegue (la personne ayant commencé le projet) m'a fait la même remarque.

    Donc l'appel a bien lieu dans ma page jsp. Maintenant, il me faut trouver pourquoi il obtient un pointeur null.

    Pour info, le code de la méthode est le suivant :
    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
    	/**
             * @return la liste du dernier téléchargement du noeud pour
             *         chaque utilisateur qui a téléchargé ce fichier.
             */
    	public List<LastDownload> getUsersLastDownloadsOfRomainFile() {
    		List<LastDownload> result = new ArrayList<LastDownload>();
     
    		try {
     
    			// Le File correspondant au node
    			romain.test.model.File nodeFile = this.treeNodeIdToRomainFile.get(this.htmlTree.getNode().getIdentifier());
     
    			DownloadDAO downloadDAO = new DownloadDAO();
    			result = downloadDAO.usersLastDownloads(nodeFile);
     
    		} catch (Exception e) {
     
    			log.error("Erreur dans la récuperation du romain.File pour affichage du treeivew :" + e.toString());
     
    		}
     
    		return result;
    	}
    Ceci dit, s'il renvoi des erreurs, c'est forcément qu'il est de nouveau appelé lors de l'exécution du code Ajax.
    Le plus étonnant étant que le code Ajax est censé ne rafraichir qu'un composant dont on lui a donné l'ID, et non pas l'intégralité de la page jsp !

  17. #37
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    Bon, après avoir masqué le contenu de la méthode qui semblait poser problème, le problème est le même !

    L'erreur renvoyée par cette méthode ne semble donc pas influencer le comportement de la requête Ajax.

    Edit : cela me fait penser que j'avais des problèmes similaire lors du tri sur des colonnes d'un tableau. Ca me renvoyé une erreur similaire sans raison apparente ! J'avoue avoir laisser l'affaire dans les cartons du fait que ce n'était pas essentiel ... Maintenant, quelque chose me dit que les deux problèmes sont liés.

  18. #38
    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
    faut trouver où le nullPointerException est lancé..
    sinon essaye d'ajouter process à a4j:support: le composant inclure dans le traitement des phases JSF.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a4j:support process="id" limitTolist="true" />

  19. #39
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 22
    Par défaut
    Je vais voir, mais je viens d'effectuer un test très con : j'ai rajoué un "sortBy" dans le tableau présentant la liste des utilisateurs.

    Dès qu'on clique sur les petits flèches pour trier la colonne -> on génère systématiquement la même erreur que celle que l'on a depuis le début.

    Je viens à penser que c'est un problème de librairies ... Et pourtant, le rendu RicheFaces est fonctionnel ! Seul les parties Ajax semblent poser problème.

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/03/2014, 21h28
  2. Réponses: 2
    Dernier message: 21/01/2011, 14h45
  3. Réponses: 2
    Dernier message: 22/06/2007, 09h24
  4. Afficher/masquer un controle dans formulaire
    Par Flo4594 dans le forum Access
    Réponses: 5
    Dernier message: 13/12/2006, 09h01
  5. Afficher / Masquer un bouton dans un formulaire
    Par Alpha31 dans le forum IHM
    Réponses: 10
    Dernier message: 30/05/2006, 12h08

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