web-dev-qa-db-ja.com

JspフォームJspのメソッドonClickの呼び出し

JSP onClickでメソッドを呼び出したいのですが、メソッドはスクリプトレット内の同じJSPにあります。

これをアーカイブするにはどうすればよいですか?

<%@ 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>


注意

メソッド名は"sendMail"です。JSPのみでコード全体を実行したい送信ボタンで呼び出されます。

4
abhi314

これは私がやったことです

    <%@ 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>

action="#"はページをリロードし、パラメーターが空白でない場合に必要なメソッドを呼び出すif条件があります(デフォルトでは、最初の呼び出しではパラメーターがnullになることに注意してください)。

0
abhi314

onclickイベントは、ユーザーが要素をクリックしたときに発生します。この属性には、JS関数(フロントエンド)を呼び出す機能があります。

あなたのケースでは、Java関数(サーバー側))を呼び出したいので、Javaコードをサーブレットに移動して使用するのが最善の方法です。

とにかく、Java関数をjspに保持したい場合は、この方法でajaxを使用してこれを行うことができます

<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は開発者の夢です。

  • ページをリロードせずにWebページを更新する
  • サーバーからデータをリクエストする-ページが読み込まれた後
  • サーバーからデータを受信する-ページが読み込まれた後
  • サーバーにデータを送信する-バックグラウンドで

ここで完全なコードを確認してください

<%@ 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>

詳細はチェック

  • AJAXの紹介: http://www.w3schools.com/xml/ajax_intro.asp
  • 5
    Jad Chahine

    JSP-サーバーで実行します。

    JavaScript-ブラウザで実行されます。

    いいえ、JSから魔法のようにそのJSPを呼び出すことはできません。ただし、Ajaxリクエストを送信するか、フォームをjspに投稿できます。ところで、Java=コードをサーブレットに移動して使用することを強くお勧めします。

    4
    Suresh Atta