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

Servlets/JSP Java Discussion :

[JSP][Javascript] click droit sur un lien


Sujet :

Servlets/JSP Java

  1. #1
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut [JSP][Javascript] click droit sur un lien
    Bonjour à tous,

    je me retrouve devant un petit problème.
    J'ai une page jsp avec laquelle les utilisateurs savent télécharger un outils.

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    <%
    Logger cat = Logger.getLogger("downloadEPTool.jsp");
    %>
    <html>
    <head>
    <script language="javascript">
     
    function downloadTool(toolNo)
    	{			
        document.formtool.toolid.value = toolNo;
        document.formtool.action ='<%=response.encodeRedirectURL("download2s")%>';
        document.formtool.submit();	 
        }
    </script>
    <title>CORDIS FP6: Download Electronic Proposal Tool</title>
    <jsp:include page="templateUp.jsp?jspTitle=Download Electronic Proposal Tool&jspName=downloadEPTool.jsp"/> 
     
    <br>
    <br>
    <span class="h3p"><p align="center">Please click on a link to download the Electronic Proposal Tool (EPT) suitable for you:</span></p>
    <br>
    <p align="center">
    <table cellpadding="10" cellspacing="10" border="0" summary="content">
    <form name="formtool" method="post" action=""> 
    <%
     
     
        Vector tools = null;
        try
        {
     
            Context ctx = new InitialContext();
            DocumentManagementHome documentManagementHome = 
                    (DocumentManagementHome)PortableRemoteObject.narrow(ctx.lookup
                    ("DocumentManagement"),DocumentManagementHome.class);
            DocumentManagement documentManagement;
     
            documentManagement = documentManagementHome.create();
            cat.info("      documentManagement.getOfflineToolsInfo() -> Vector ");
            tools = documentManagement.getOfflineToolsInfo();
     
        }catch(DocumentManagementException dme){
            cat.error("JSP: DocumentManagementException Details: ", dme);
     
        }catch(NamingException ne){
            cat.error("JSP: NamingException Details: ", ne);
     
        }catch(CreateException ce){
            cat.error("JSP: CreateException Details: ", ce);
     
        }catch(RemoteException re){
            cat.error("JSP: RemoteException Details: ", re);
     
        }
     
        if (tools!=null)
        {
            for (Enumeration enum = tools.elements(); enum.hasMoreElements(); )
            {
     
                Vector datatool = (Vector)enum.nextElement();
                int toolId = ((Integer)datatool.elementAt(0)).intValue();
                String toolName = (String)datatool.elementAt(1);
                String toolComments = (String)datatool.elementAt(2);
                cat.info("ToolId: "+toolId+" ToolName: "+toolName+" ToolComments: "+toolComments);
    %>
        <tr>
    	    <td height="30" align="left">
    		    <a href="javascript:downloadTool('<%=toolId%>')"><%=toolName%></a>
    		</td>
    		<td height="30" align="left">
    		    <%=toolComments%>
    		</td>
    	</tr>
    	<%
            }
        }
            %>
        <input type="hidden" name="toolid"></input>
        <input type="hidden" name="downType" value="eptT"></input>
    </form>
    </table>
     
    </p><br><br>
     
    <!-- CONTENTS ENDS HERE -->
     
    <jsp:include page="templateDown.txt"/>
    </html>
    quand je clique sur le lien je n'ai aucun soucis pour télécharger, mais quand je fais un click droit --> save target as, j'ai un beau message d'erreur du browser

    http://stessy.developpez.com/tmp/tool.jpg

    Je n'ai aucune idée pourquoi il me sort cette erreur
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  2. #2
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    Peux tu montrer le code qui est généré stp ?

  3. #3
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Je viens d'aller faire un tour sur le web et il parait que ce n'est pas possible à cause du javascript.

    Quelqu'un saurait-il m'en dire plus

    meufeu, tu veux parler du code java généré?

    Le problème vient d'ici en fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script language="javascript"> 
     
    function downloadTool(toolNo) 
       {          
        document.formtool.toolid.value = toolNo; 
        document.formtool.action ='<%=response.encodeRedirectURL("download2s")%>'; 
        document.formtool.submit();    
        } 
    </script>
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    C'est normal car le HREF de ta balise < a > ne correspond pas à une URL mais à du code Javascript...

    Si tu fais cela pour cacher l'URL exacte du fichier il vaut mieux le traiter coté serveur...

    a++

  5. #5
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    oui effectivement, cela ne me semble pas possible que cela marche avec le clic droit .. je crois que l'on peut le désactiver ...

    mais par contre, je vois pas comment il peut te construire ce lien ..
    C'est pour ca queje voulias voir la page HTML générée ..

  6. #6
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Tu veux dire quoi par coté serveur.
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Stessy
    Quelqu'un saurait-il m'en dire plus
    Nos post se sont croisé...

    La fonction "enregistrer la cible" permet d'enregistrer depuis une URL.
    Pour que ton lien puisse être enregistrer ta balise HREF doit posseder une URL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="/repertoire/fichier.ext" onclick="downloadTool('<%=toolId%>');return false;"><%=toolName%></a>
    Lors d'un click gauche le onclick est exécuté...
    Le return false; final permet d'éviter que la page indiqué dans le HREF soit chargé
    Et lors d'un click-droit c'est le contenu de HREF qui est utilisé...

    a++

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Stessy
    Tu veux dire quoi par coté serveur.
    Décidément nos post ne font que de se croiser

    Je pensais à une servlet que tu appellais de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="/download.srv?id=<%=toolId%>"><%=toolName%></a>
    Avantage : plus de javascript !

    Et coté serveur, dans ta servlet tu récupères l'id et tu renvois le fichier correspondant...

    Tu l'ouvre avec un FileInputStream, tu lit et tu ecris dans le response.getOutputStream...

    Eventuellement tu changes le response.setContentType() pour mettre quelque-chose de plus adéquat (style "application/pdf" pour une fichier PDF)

    a++

  9. #9
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Ce n'est pas un fichier c'est une servlet que j'appelle
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  10. #10
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Question : Pourquoi utilises-tu du javascript ???

  11. #11
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Tout simplement pour cacher l'url
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  12. #12
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Faudrait quel'on se mette d'accord pour savoir qui poste et à quelle heure car nos posts n'arretent pas de se croiser
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  13. #13
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Citation Envoyé par adiGuba
    Citation Envoyé par Stessy
    Tu veux dire quoi par coté serveur.
    Décidément nos post ne font que de se croiser

    Je pensais à une servlet que tu appellais de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="/download.srv?id=<%=toolId%>"><%=toolName%></a>
    Avantage : plus de javascript !

    Et coté serveur, dans ta servlet tu récupères l'id et tu renvois le fichier correspondant...

    Tu l'ouvre avec un FileInputStream, tu lit et tu ecris dans le response.getOutputStream...

    Eventuellement tu changes le response.setContentType() pour mettre quelque-chose de plus adéquat (style "application/pdf" pour une fichier PDF)

    a++
    je ne peux pas spécifier un setContentType précis car j'ai 2 fichiers ( un zip et un exe)

    donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    response.setContentType("application/download");
            response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  14. #14
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Stessy
    Faudrait quel'on se mette d'accord pour savoir qui poste et à quelle heure car nos posts n'arretent pas de se croiser
    Je prend les minutes pairs et toi les impairs (ou l'inverse... )

    Citation Envoyé par Stessy
    je ne peux pas spécifier un setContentType précis car j'ai 2 fichiers ( un zip et un exe)

    donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    response.setContentType("application/download");
            response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
    Du moment que tu en précise un c'est bon...
    Si tu n'en met pas il peut envoyer "text/html" et la ca pose problème (le fichier est affiché dans le navigateur au lieu d'être téléchargé)

    Citation Envoyé par Stessy
    Tout simplement pour cacher l'url
    Et c'est pour ca que le click droit ne trouve pas l'URL

    Plus sérieusement, pourquoi as-tu besoin de cacher l'URL de la servlet ?
    Ton problème viens du code Javascript donc il faut essayer de trouver une solution coté serveur pour l'enlever...

    PS: l'URL s'affiche dans la barre d'adresse apres le click sur le lien ? non ?

  15. #15
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    L'URL s'affiche quand tu passe sur le lien.

    J'ai une autre question.

    Est-il possible de passer des paramètres de cette manière.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <a href="<%=response.encodeRedirectURL("download2s")%>"><%=toolName%></a>
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  16. #16
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<%=response.encodeRedirectURL("download2s")%>?param1=valeur&param2=valeur2"><%=toolName%></a>
    Mais il seront visible dans l'URL (ce n'est pas ce que tu veux ...)

  17. #17
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Citation Envoyé par Stessy
    L'URL s'affiche quand tu passe sur le lien.

    J'ai une autre question.

    Est-il possible de passer des paramètres de cette manière.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <a href="<%=response.encodeRedirectURL("download2s")%>"><%=toolName%></a>
    Oublie ce que je viens de dire.
    Je viens de le faire à l'instant
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  18. #18
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Encore une autre question.

    Comment puis-je faire pour simuler le submit d'une form sans bouton submit ni javascript ?

    Car j'ai des

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="hidden" name="toolid"></input>
        <input type="hidden" name="downType" value="eptT"></input>

    dans le form
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

  19. #19
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Je ne pense pas que ce soit possible...

    Le plus simple serait d'utiliser un < form > par ligne de ton tableau avec un bouton submit (comme cela pas de problème avec les click-droit car il ne peuvent pas le faire sur un submit)

  20. #20
    Membre expérimenté

    Homme Profil pro
    Senior Développeur JEE
    Inscrit en
    Avril 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Développeur JEE
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 795
    Points : 1 660
    Points
    1 660
    Par défaut
    Le problème est que je ne dois pas avoir de bouton, juste un <a href="....>

    Mais ça ne fais rien

    pour le moment j'ai réussi avec le lcic droit.

    C'est pas très joli mais c'est déjà mieux que rien. J'ai du passer les paramètres directement dans l'url. Tant pis.

    Si quelqu'un a une autre solution, elle est la bienvenue.

    En tout cas un grand merci adiguba.

    PS : voilà ce que cela donne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<%=response.encodeRedirectURL("download2s")%>?toolid=<%=toolId%>&downType=eptT" onclick="downloadTool('<%=toolId%>');return false;"><%=toolName%></a>
    Langages : Java, SQL
    Outils : Eclipse, Intellij
    SGBD : Oracle, PostgreSQL
    Mes Articles

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Click droit sur le CDROM
    Par sitirna dans le forum C++Builder
    Réponses: 8
    Dernier message: 21/09/2006, 14h10
  2. [VB6] Click droit sur MSHFlexGrid
    Par sab_etudianteBTS dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 08/06/2006, 09h47
  3. click-droit sur un exécutable
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 27/09/2005, 14h49
  4. Réponses: 1
    Dernier message: 28/08/2005, 07h30
  5. Event Click droit sur ComboBox
    Par AF_STjohn dans le forum C++Builder
    Réponses: 8
    Dernier message: 29/04/2005, 11h48

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