public class Relay extends HttpServlet {
@Override
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String command = request.getParameter("command");
RequestDispatcher rd =request.getRequestDispatcher(command);
rd.forward(request, response);
System.out.println("Request forwarded to " + command + " servlet");
}
}
This is my Relay servlet, I'm sending data from this form
<form action="Relay" method="POST" enctype="multipart/form-data"> /
<input type="hidden" name="command" value="AddProduct" />
<input type="text" name="pname" value="" />
<input name="" type="submit" value="Add Product">
</form>
It is throwing a java.lang.NullPointerException
.
But works fine when I remove this:
enctype="multipart/form-data"
Why do you need to add it then? Just keep it out.
If you need it in order to upload a file by
<input type="file">
which you intend to add later on, then you should put@MultipartConfig
annotation on your servlet, so thatrequest.getParameter()
will work and that all uploaded files can be retrieved byrequest.getPart()
.See also:
Parameters encoded with
multipart/form-data
are sent in POST body - not as regular request parameters, therefore can't be read usingrequest.getParamter(...)
.Check out Commons file upload package for multipart requests processing.
I am including this just for additional information for troubleshooting. if you are stuck and want to know about what all parameters are coming through multipart request you can print all parameters using following code.