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 :

Probleme apres CommandLink


Sujet :

JSF Java

  1. #1
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut Probleme apres CommandLink
    salut tout le monde,
    j'ai mit en place n h:commandLink me permettant de faire appel a une fenetre du navigateur qui me propose d'enregistrer ou d'ouvrir un fichier
    Ca marche sans probleme cependant apres lorsque j'utilise un bouton present dans la meme fenetre, ce dernier m'impose la meme action que le h:commandLink alors q'une action est deja définie pour ce bouton

    Auriez vous une idée sur l'origine du probleme ?

    Mon commandLink:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <h:commandLink action="#{beanController.openFichier}" immediate="true" rendered="#{!creation}">
    					<h:graphicImage id="#{tableName}-img-view" alt="view"
    						url="/images/i-view.gif" styleClass="image" />
    					<f:param name="idfichier" value="#{fichier.idfichier}" />
    				</h:commandLink>
    ma methode pour le fichier:
    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
     
    .......................
    //Lecture des informations du fichier
    		Fichier fichier = publicFacade.fichierFindByPrimaryKey(new Integer(
    				idfichier));
     
    		HttpServletResponse response= (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
    		response.setContentType(fichier.getContentType());
    		response.setHeader("Content-Disposition", "attachment; fileName=" + fichier.getDesignation() + "");
    		OutputStream out;
    		try
    		{
    			out = response.getOutputStream();
    			out.write(fichier.getFichier());
    			out.flush(); 
    			out.close();
    		}
    		catch (IOException e){			
    			logger.error(e.getMessage());
    			e.getCause().printStackTrace();			
    		}

  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
    ajoute un responseComplete à la fin de l'action:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    out.close();
    context.responseComplete();

  3. #3
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    context.responseComplete(); n'apporte aucun changement

  4. #4
    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
    tu veux dire que si tu click sur un autre button c'est l'action du commandLink qui s'exécute?

    peux tu poster le code.?

  5. #5
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    oui si je clique sur n'importe quel h:commandButton present sur la page, apres avoir tenté l'ouverture du fichier, c'est l'action d'ouverture du fichier qui est déclenché, par contre j'ai egalement des h:commandLink sur cette meme page et je n'ai aucun soucis avec

    quel partie du code qui t'intéresses?

  6. #6
    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 snipes Voir le message
    oui si je clique sur n'importe quel h:commandButton present sur la page, apres avoir tenté l'ouverture du fichier, c'est l'action d'ouverture du fichier qui est déclenché, par contre j'ai egalement des h:commandLink sur cette meme page et je n'ai aucun soucis avec

    quel partie du code qui t'intéresses?
    bahh donne le code complet de l'action et un exemple du commandButton.

  7. #7
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    Action OpenFichier :

    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
    /**
             * Ouverture d'un fichier
             * @param event
             */	
    	@SuppressWarnings("unchecked")
    	public void openFichier() {
     
    		FacesContext faces = FacesContext.getCurrentInstance();
     
    		// Extraction de l'identifiant du fichier sélectionné
    		String idfichier = (String) faces.getExternalContext().getRequestParameterMap().get("idfichier");
     
    		//Controle de l'identifiant du fichier
    		if (idfichier == null || idfichier.trim().equalsIgnoreCase("") || idfichier.trim().equalsIgnoreCase("null")) {
    			JSFUtils.addError("errors.unknown.id", "fichier joint");
    			return;
    		}
    		//Lecture des informations du fichier
    		Fichier fichier = publicFacade.fichierFindByPrimaryKey(new Integer(
    				idfichier));
     
    		HttpServletResponse response= (HttpServletResponse)faces.getExternalContext().getResponse();
    		response.setContentType(fichier.getContentType());
    		response.setHeader("Content-Disposition", "attachment; fileName=" + fichier.getDesignation() + "");
    		OutputStream out;
    		try
    		{
    			out = response.getOutputStream();
    			out.write(fichier.getFichier());
    			out.flush(); 
    			out.close();
    			faces.responseComplete();
    		}
    		catch (IOException e){			
    			logger.error(e.getMessage());
    			e.getCause().printStackTrace();			
    		}
     
    	}
    Mes boutons :

    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
    <h:column>
    						<h:commandButton id="save" value="Mettre à jour" type="submit"
    							styleClass="button" tabindex="1"
    							action="#{demandeEnregistrementController.update}" />
    						<h:commandButton id="delete" value="Supprimer" type="submit"
    							styleClass="button" tabindex="2"  onclick="return confirm('Voulez-vous supprimer cette demande?')"
    							action="#{demandeEnregistrementController.remove}" rendered="#{!demandeEnregistrementController.demandePriseEnCompte and demandeEnregistrementController.userDemandeur}" />
    						<h:commandButton id="cancel" value="Annuler" styleClass="button"
    							immediate="true"
    							action="#{demandeEnregistrementController.cancel}" tabindex="3" />
    						<h:commandButton id="back1" value="Retour"
    							styleClass="button" tabindex="4" immediate="true"
    							action="#{accueilController.init}"
    							rendered="#{fn:containsIgnoreCase(demandeEnregistrementController.pageappelante, 'accueil')}" />
    						<h:commandButton id="back2" value="Retour"
    							styleClass="button" tabindex="4" immediate="true"
    							action="#{demandeConsultationController.init}"
    							rendered="#{fn:containsIgnoreCase(demandeEnregistrementController.pageappelante, 'suivi_objetrequetes')}" />
    					</h:column>

  8. #8
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut

  9. #9
    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
    tu as le même comportement sur IE et FF? quel est ton serveur?

  10. #10
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    Meme comportement quelque soit le navigateur
    Le serveur utilisé est JBoss (il ne retourne rien dans le fichier log )
    j'ai aussi essayé h:messages mais ca ne donne rien non plus

  11. #11
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut
    rajoute des immediate="true" à tes boutons ou enlève celui du commandLink

  12. #12
    Membre éclairé Avatar de snipes
    Inscrit en
    Septembre 2004
    Messages
    547
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 547
    Par défaut
    Citation Envoyé par mLk92 Voir le message
    rajoute des immediate="true" à tes boutons ou enlève celui du commandLink
    et dire que je cherchais compliqué la

    c'etait exactement ca , j'ai retiré le immediat="true" du commandLink et ca marche

    Merci a vous 2 pour votre participation

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

Discussions similaires

  1. Problemes apres Décompilation avec DJ Decompiler
    Par Michel_be dans le forum Langage
    Réponses: 1
    Dernier message: 08/02/2007, 01h22
  2. [AJAX] Liste déroulante pour afficher les informations en ajax div ?
    Par rob2-9 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 17/11/2006, 09h06
  3. Probleme apres chgt carte graphique
    Par Noki dans le forum Administration système
    Réponses: 6
    Dernier message: 29/09/2006, 18h13
  4. probleme apres mis a jour
    Par Blo0d4x3 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 18/08/2006, 21h36
  5. probleme apres changement du password du listener
    Par ORA_9i dans le forum Oracle
    Réponses: 1
    Dernier message: 26/11/2005, 12h34

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