web-dev-qa-db-fra.com

Méthode d'appel onClick of Jsp form Jsp

Je souhaite appeler une méthode dans Jsp onClick, la méthode est sur le même Jsp à l'intérieur du scriptlet.

Comment dois-je archiver cela?

<%@ page
    import="Java.io.*,Java.lang.*,Java.util.*,Java.net.*,Java.util.*,Java.text.*"%>
<%@ page import="javax.activation.*,javax.mail.*,org.Apache.commons.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>


<%!
    public String sendMail(String to, String sub, String msg) {
        String res = null;
        System.out.println("HI");       
        return res;
    }%>

<html>
<head>
<title>Send Email using JSP</title>
</head>
<body>
    <center>
        <h1>Send Email using JSP</h1>
    </center>
    <form>  
        <label>Email To</label><br />       
            <input type="text" name="to" /><br /> 
        <label>Subject</label><br />        
            <input type="text" name="sub" /><br /> 
        <label for="body">Message</label><br />
            <input type="text" name="msg" /><br /> 
        <input type="submit" onClick="sendMail( to, sub, msg )"/>
    </form>
</body>
</html>

Remarque: Le nom de la méthode est "sendMail" , Il est appelé par le bouton d'envoi Je veux faire le code entier dans Jsp seulement.

3
abhi314

C'est ce que j'ai fini par faire

    <%@ page import= "Java.io.*,Java.lang.*,Java.util.*,Java.net.*,Java.util.*,Java.text.*"%>
    <%@ page import="javax.activation.*,javax.mail.*,org.Apache.commons.*"%>
    <%@ page import="javax.servlet.http.*,javax.servlet.*"%>


    <%!
          public String sendMail(String to, String sub, String msg) {
            String res = null;      
            System.out.println("HI");      
            return res;
         }
     %>

    <%        
    String a = request.getParameter("to");
    if(a != null){
        sendMail(request.getParameter("to"),request.getParameter("sub"),request.getParameter("msg"));
    }
    %>
    <html>
    <head>
    <title>Send Email using JSP</title>
    </head>
    <body><center>
        <form action="#" method="post"> 
            <label>Email To</label><br />       
                <input type="text" name="to" /><br /> <br /> 
            <label>Subject</label><br />        
                <input type="text" name="sub" /><br /> <br /> 
            <label for="body">Message</label><br />
                <input type="text" name="msg" /><br /> <br /> 
            <input type="submit"/>
        </form>
    </center></body>
    </html>

Le action="#" recharge la page et il existe une condition if qui appelle la méthode requise si le paramètre n'est pas vide (notez que, par défaut, lors du premier appel, le paramètre sera null).

0
abhi314

L'événement onclick se produit lorsque l'utilisateur clique sur un élément. Cet attribut a la capacité d'appeler des fonctions JS (front end)

Dans votre cas, vous souhaitez appeler une fonction Java (côté serveur). Le meilleur moyen consiste donc à déplacer le code Java vers un servlet et à l'utiliser.

Quoi qu'il en soit, si vous souhaitez conserver la fonction Java dans le fichier JSP, vous pouvez le faire via ajax de cette manière.

<script type="text/javascript">
        $(document).ready(function() {
            $('#sendMailBtn').click(function (){
                $.ajax({
                    type: "post",
                    url: "/path", 
                    data: "email=" + $('#email').val() + "&subject="+$('#subject').val() + "&msg=" + $('#msg').val(),
                    success: function(msg){      
                        //
                    }
                });
            });
        });
 </script>

AJAX est un rêve de développeur, car vous pouvez

  • Mettre à jour une page Web sans recharger la page
  • Demander des données à un serveur - après le chargement de la page
  • Recevoir des données d'un serveur - après le chargement de la page
  • Envoyer des données à un serveur - en arrière-plan

  • Vérifiez le code complet ici

    <%@ page import="Java.io.*,Java.lang.*,Java.util.*,Java.net.*,Java.util.*,Java.text.*"%>
    <%@ page import="javax.activation.*,javax.mail.*,org.Apache.commons.*"%>
    <%@ page import="javax.servlet.http.*,javax.servlet.*"%>
    
    
    <%!
        public String sendMail(String to, String sub, String msg) {
            String res = null;
            System.out.println("HI");       
            return res;
        }
    %>
    
    <html>
        <head>
            <title>Send Email using JSP</title>
            <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
        </head>
    
        <body>
            <center>
                <h1>Send Email using JSP</h1>
            </center>
            <form>  
                <label>Email To</label><br />       
                <input id="email" type="text" name="to" /><br /> 
                <label>Subject</label><br />        
                <input id="subject" type="text" name="sub" /><br /> 
                <label for="body">Message</label><br />
                <input id="msg" type="text" name="msg" /><br /> 
                <input id="sendMailBtn" type="submit" />
            </form>
        </body>
    
        <script type="text/javascript">
            $(document).ready(function() {
                $('#sendMailBtn').click(function (){
                    $.ajax({
                        type: "post",
                        url: "/path", 
                        data: "email=" + $('#email').val() + "&subject="+$('#subject').val() + "&msg=" + $('#msg').val(),
                        success: function(msg){      
                            //
                        }
                    });
                });
            });
        </script>
    </html>
    

    Pour plus d'informations, consultez

  • AJAX Introduction: http://www.w3schools.com/xml/ajax_intro.asp
  • Evénement onclick: http://www.w3schools.com/tags/ev_onclick.asp

  • 5
    Jad Chahine

    JSP - Exécute sur le serveur.

    JavaScript - s'exécute dans le navigateur.

    Non, vous ne pouvez pas appeler ce JSP comme par magie depuis JS. Cependant, vous pouvez envoyer une demande Ajax ou poster le formulaire à jsp. BTW, je vous suggère fortement de déplacer le code Java vers un servlet et de l’utiliser.

    4
    Suresh Atta