There would be some cases in which we need to submit an HTML form from within a Java applet. The applet does some tasks and then needs to submit the form in the enclosing HTML page. To do so, we would utilize the capability of communication between Java applet and Javascript through the LiveConnect technology as follows:

  • In the HTML page, write a Javascript function that contains code to submit the form. For example:
    function submitForm() {
    	// do some processing submit the form...
    
    	document.forms[0].submit();
    } 
    That will submit the first form in the HTML document.

  • In the applet, invoke the Javascript’s submitForm() function like this:
try {
	JSObject jsObj = JSObject.getWindow(this);

	jsObj.call("submitForm", null);

} catch (JSException ex) {
	ex.printStackTrace();
}
 

We may want to pass something from the Java applet to Javascript: the Javascript method takes some parameters as follows:

function submitForm(param1, param2) {
	// do something with the params and submit the form...

	document.forms[0].submit();
} 
Then modify the call in Java side as follows:

try {
	JSObject jsObj = JSObject.getWindow(this);

	jsObj.call("submitForm", new String[] {"param1", "param2"});

} catch (JSException ex) {
	ex.printStackTrace();
} 
That passes two String arguments “param1” and “param2” to the Javascript method. 

Following is complete code of the sample HTML page:

<html>
	<head>
		<title>Submitting HTML form in Java applet</title>
	</head>
	<body>
		<center>
			<!-- show the applet -->
			<applet id="SampleApplet"
				code="SampleApplet.class"
				width="200" height="50"
					>
			</applet>

			<!-- show HTML form -->
			<form method="POST" action="http://localhost:8080/SampleApp/process">
				Enter Full Name: <input type="text" name="fullname" size="30"/>
				<br/>
				Enter E-mail: <input type="text" name="email" size="30"/>
			</form>
		</center>
	</body>
	<script type="text/javascript">

		function submitForm() {
			// do some processing submit the form...

			document.forms[0].submit();
		}
	</script>
</html>
This HTML page displays a Java applet with only a button, along with an HTML form with two text fields.

 



And here is complete code of the sample applet:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import netscape.javascript.*;

/**
 * A sample Java applet that demonstrates how to call Javascript in order to
 * submit the form in the enclosing HTML page.
 */
public class SampleApplet extends JApplet {

	private JButton button = new JButton("Submit");

	public void init() {
		getContentPane().setLayout(new FlowLayout());
		getContentPane().add(button);

		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				buttonActionPerformed(evt);
			}
		});
	}

	public void buttonActionPerformed(ActionEvent evt) {
		try {
			JSObject jsObj = JSObject.getWindow(this);

			jsObj.call("submitForm", null);

		} catch (JSException ex) {
			ex.printStackTrace();
		}
	}
}
This applet simply displays a button which will invoke the Javascript function when clicked.

Opening the page SampleAppletTest.html in browser:

applet html form submit

Click the Submit button, values of the two text fields in the form will be submitted to the URL specified by the action attribute of <form> element.

 

Other Java Applet Tutorials:


About the Author:

is certified Java programmer (SCJP and SCWCD). He started programming with Java in the time of Java 1.4 and has been falling in love with Java since then. Make friend with him on Facebook and watch his Java videos you YouTube.



Attachments:
Download this file (AppletHTMLFormSubmit.zip)AppletHTMLFormSubmit.zip[ ]2 kB

Add comment

   


Comments 

#4Nam2020-11-06 17:13
Phong ơi, Java applet là công nghệ đã chết và không còn trình duyệt nào hỗ trợ nữa.
Quote
#3Phong2020-11-06 01:26
Chào anh, Em đã thử run trên CMD được trên CMD. Tuy nhiên, trên Chrome không hiện được applet button.
Chrome còn thiếu setting gì không anh?
Quote
#2hi2018-05-31 02:20
hello this is amazing
Quote
#1Remith2015-11-20 00:04
Thank you very much. This is very very helpful for me. I just wanted to run one method from javascript, Its DONE!
Quote