| Newsletter |
RESTful Web Services (JAX-RS) @FormParam Example
By using @FormParam annotation, RESTful web service would accept HTML form parameters sent by the client in the POST request and bind them to the method variables. Generally @FormParam will come into picture when client send the data in POST request, if its the GET request @QueryParam would be the best choice.
Let me give you an example on usage of @FormParam in the JAX-RS.
Note:
If you are new to RESTful web services, first go through ‘Jersey Hello World Example Using JAX-RS Specification‘ there you can learn each and every step to create a RESTful web service in eclipse, how to install maven and configuration settings related to JAX-RS.
Required Files
- pom.xml and web.xml are similar to the previous article
- RestServiceFormParamJava4s.java
- Client.html
RestServiceFormParamJava4s.java
package com.java4s;
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
@Path("/customers")
public class RestServiceFormParamJava4s {
@POST
@Path("/addCustomer")
@Produces("text/html")
public Response getResultByPassingValue(
@FormParam("nameKey") String name,
@FormParam("countryKey") String country) {
String output = "<font face='verdana' size='2'>" +
"Web Service has added your Customer information with Name - <u>"+name+"</u>, Country - <u>"+country+"</u></font>";
return Response.status(200).entity(output).build();
}
}Client.html
<html>
<head>
<title>RESTful Web Services (JAX-RS) @FormParam Exampale</title>
</head>
<body>
<form action="http://localhost:2013/RestFormParamAnnotationExample/rest/customers/addCustomer" method="post">
<table>
<tr>
<td><font face="verdana" size="2px">Customer Name : </font></td>
<td><input type="text" name="nameKey" /> </td>
</tr>
<tr>
<td><font face="verdana" size="2px">Country</font></td>
<td> <input type="text" name="countryKey" /> </td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Add Customer" /> </td>
</tr>
</table>
</form>
</body>
</html>Explanation
- Right click on your project root folder > Run As > Run on Server
- Eclipse will open http://localhost:2013/<projectRootFolder> with 404 Error by default, forget about that
- Now open Client.html in your web browser, enter the details and click submit [ I have created this .html file to send input form parameters to our RESTful service, you no need to create & place this file in the project workspace, myself i have created client.html file in my desktop and open in Google chrome, and verified the output]
- In Client.html, observe the URL in the from action [ line number 7 ]
- Once you click on Submit, Client.html will POST the data to the restful service. From there REST service will retrieve those details by using @FormParam annotation.
Remember: Input field names in Client.html [ line numbers 12,17 ] should match with @FormParam(“-“) parameters[ line numbers 16,17 ] in RestServiceFormParamJava4s.java
Output
Input:

Output:

You Might Also Like
::. About the Author .:: | ||
![]() | ||


How to create client for this example
Hi i am a learner of web services.Firstly very well explained tutorial.I am building service with a pojo object having two fields user,email.I have same field in my client form which i am submitting.Here i am using @RequestBody so that it will map the fields on the fly.
But i am facing an issue like ,
WARNING: No message body reader has been found for request class Employee, ContentType : application/x-www-form-urlencoded.
Jan 27, 2016 10:13:10 PM org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse
I didnt understand exactly where i am missing.Could you please help
Hi,
as explained ealier "We will use @Produces annotation for GET requests only".But in above example I can see @produces for POST request.Can you explain me why you used @produces annotation for POST request.
Thanks,
Vanaja.G