Вызов метода onClick формы Jsp Jsp



Я хочу вызвать метод в 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" , он вызывается кнопкой submit
Я хочу сделать весь код только в Jsp.

806   3  

3 ответов:

JSP-выполняется на сервере.

JavaScript-выполняется в браузере.

Нет, вы не можете назвать это JSP магически из JS. Однако вы можете отправить AJAX-запрос или форму в JSP. Кстати, я настоятельно рекомендую вам переместить java-код в сервлет и использовать его.

Событие onclick происходит, когда пользователь нажимает на элемент. Этот атрибут имеет возможность вызывать функции JS (front end)

В вашем случае вы хотите вызвать функцию 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-это мечта разработчика, потому что вы можете

  • обновление веб-страницы без перезагрузка страницы
  • запрос данных с сервера-после загрузки страницы
  • получение данных с сервера-после загрузки страницы
  • отправка данных на сервер-в фоновом режиме
  • Проверьте полный код здесь

    <%@ 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
  • событие onclick: http://www.w3schools.com/tags/ev_onclick.asp
  • Вот что я в итоге сделал

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

    Comments

      Ничего не найдено.