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");
}
}
这是我的接力服务员,我是从
发送日期的 <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>
它提供了java.lang.NullPointerException。 ENCTYPE =&#34;多部分/格式数据&#34; //当我删除它的工作正常
答案 0 :(得分:8)
为什么需要添加呢?坚持下去。
如果你需要它来上传你想要稍后添加的<input type="file">
文件,那么你应该在你的servlet上添加@MultipartConfig
注释,这样request.getParameter()
就可以了并且request.getPart()
可以检索所有上传的文件。
@WebServlet("/Relay")
@MultipartConfig
public class Relay extends HttpServlet {
// ...
}
答案 1 :(得分:1)
使用multipart/form-data
编码的参数在POST正文中发送 - 而不是作为常规请求参数,因此无法使用request.getParamter(...)
读取。
查看Commons file upload包以进行多部分请求处理。
答案 2 :(得分:0)
我将其包含在内,仅用于解决问题的其他信息。 如果您遇到困难并想知道通过多部分请求所有参数的来源,您可以使用以下代码打印所有参数。
MultipartRequest multi = <Your code to retrieve multipart request goes here. Sorry but can not post code as I use proprietary APIs>
Enumeration en1 = multi.getParameterNames();
while (en1.hasMoreElements()) {
String strParamName = (String)en1.nextElement();
String[] strParamValues = multi.getParameterValues(strParamName);
for (int i = 0; i < strParamValues.length; i++) {
System.out.println(strParamName + "=" + strParamValues[i]);
}
}
答案 3 :(得分:-1)
删除表单标签并使用
echo <?php form_open_multipart('Controller/function');
每当我使用enctype="multipart/form-data"
时,我都会遇到相同的问题
我没有得到文件名,当我删除文件名时,它工作正常
试试它对我有用