Вызов метода 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.
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