I am trying to find a way to invoke a piece of java code
within the JSP using HTML form
Sorry,not possible.
Jsp lies on server
side and html
plays on client side
unless without making a request
you cannot do this :)
Not possible. When the form is submitted, it sends a request to the server. You have 2 options:
Have the server perform the desired action when the it receives the request sent by the form
or
Use Javascript to perform the desired action on the client:
<form name="frm1" action="submit" onsubmit="invokeMe()"
...
</form>
<script>
function invokeMe()
{
alert("He invoked me. I am happy!")
}
</script>
You can use Ajax to submit form to servlet and evaluate java code, but stay on the same window.
<form method="get" action="invokeMe()" id="submit">
<input type="submit" value="click to submit" />
</form>
<script>
$(document).ready(function() {
$("#submit").submit(function(event) {
$.ajax({
type : "POST",
url : "your servlet here(for example: DeleteUser)",
data : "id=" + id,
success : function() {
alert("message");
}
});
$('#submit').submit(); // if you want to submit form
});
});
</script>
You can't do this since JSP rendering happens on server-side and client would never receive the Java code (ie. the invokeMe()
function) in the returned HTML. It wouldn't know what to do with Java code at runtime, anyway!
What's more, <form>
tag doesn't invoke functions, it sends an HTTP form
to the URL specified in action
attribute.
you cannot write a java method
in scriptlet
. Because at compilation
time code in scriptlet
becomes part of service
method. Hence method within a method is wrong.
How ever you can write java methods
within init tag
and can call from scriptlet
like below code.
<form method="get" action="">
<input type="submit" value="click to submit" />
</form>
<%
invokeMe();
%>
<%!
private void invokeMe(){
out.println("He invoked me. I am happy!");
}
%>