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 :

Exécuter une commande coté client


Sujet :

JSF Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Par défaut Exécuter une commande coté client
    Bonjour,

    J'ai développé une appli web en JSF (au moyen de Sun Java Studio Creator pour les curieux). L'application est déployée sur un serveur tomcat qui fonctionne sur une machine Unix
    Cependant, j'ai également créé un fichier d'aide (.hlp) et je souhaiterais que l'utilisateur puisse visualiser ce fichier. Petit problème, le format .hlp nécessite windows.
    Est-il possible ainsi d'exécuter une commade du coté du client ?

    D'avance merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Par défaut
    Après pas mal de recherche j'ai trouvé ceci sur ce forum http://forum.java.sun.com/thread.jsp...readID=5059323

    Pour résumer, il suffit de créer un lien(ou un bouton) et le code java associé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public String button1_action() {
         DownloadBean d = new DownloadBean();
         d.sendFile("text/plain");  //d.sendFile("application/hlp")pour mon fichier .hlp apparament
         return null;
    }
    et d'ajouter la classe DownloadBean.java suivante:
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    import javax.faces.context.FacesContext;
    import javax.servlet.http.*;
    import javax.servlet.ServletOutputStream;
    import java.io.IOException;
    import java.io.*;
     
    /**
     *
     * @author
     */
    public class DownloadBean {
     
        /** Creates a new instance of DownloadBean */
        public DownloadBean() {
        }
     
        public void sendFile(String mimeType) {
            FacesContext faces = FacesContext.getCurrentInstance();
            HttpServletResponse response = (HttpServletResponse) faces.getExternalContext().getResponse();
            HttpServletRequest request = (HttpServletRequest) faces.getExternalContext().getRequest();
     
            String filename = "myFile.txt" //"/home/repertoire/monFichierDAide.hlp" pour mon fichier d'aide; 
     
            byte[] data = getSomeData(request);
     
            // Note that different browsers will behave differently and you have no control over this.
     
            // We'll use different mime types to implement the different "Open" and "Save" behaviors.
            // "application/x-unknown" will be the MIME type used for the "Save" behavior.
            response.setContentType(mimeType);
            response.setContentLength(data.length);
     
            // Cross-browser hack for Firefox 1.0.7 and IE 6 compatibility.
            // IE 6 ignores the MIME type and decides based on the "attachment" or "inline"
     
            if (mimeType.equals("application/x-unknown")) {
                // Show the "Save As..." dialog
                response.setHeader( "Content-disposition", "attachment; filename=\"" + filename + "\"");
            } else {
                // attempt to "open" the file
                response.setHeader( "Content-disposition", "inline; filename=\"" + filename + "\"");
            }
     
            // Now we start sending data with the response object.
            try {
                ServletOutputStream out;
                out = response.getOutputStream();
                out.write(data);
            } catch (IOException e) {
                e.printStackTrace();
            }
     
            faces.responseComplete();
        }
     
     
        public byte[] getSomeData(Object o) {
            // ignore the HttpServletRequest object and return some data.
            return "Hello World!".getBytes();
        }
     
    }
    Cependant, je ne comprends pas comment transformer ce code pour que ce soit mon fichier .hlp qui soit téléchargé(ou executé). J'ai ajouté ce fichier dans à peu pres tous les répertoires de tomcat ainsi que dans les ressources du projet mais ceci sans succès

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Par défaut
    Il faut que tu lises ton fichier via un FileInputStream pour obtenir un byte array (byte[]) que tu écriras via the outputStream dans la réponse.
    Tu précises le nom de ton fichier d'aide dans ton FileInputStream.

    Tu peux également écrire un servlet dédié sans passer par JSF pour faire cela....

Discussions similaires

  1. faire exécuter une commande chez le client
    Par kenny49 dans le forum Langage
    Réponses: 1
    Dernier message: 05/04/2007, 13h53
  2. [Run]Exécuter une commande paramétrable
    Par nice dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 31/01/2006, 14h27
  3. exécuter une commande de logiciel
    Par MrsFrizz dans le forum C
    Réponses: 4
    Dernier message: 17/01/2006, 10h48
  4. exécuter une commande système à partir de sqlplus?
    Par c_moi_c_moi dans le forum Oracle
    Réponses: 24
    Dernier message: 08/11/2005, 15h11
  5. Exécuter une commande linux.
    Par casafa dans le forum Linux
    Réponses: 4
    Dernier message: 20/07/2005, 23h13

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