【发布时间】:2011-05-03 07:11:28
【问题描述】:
我正在用 java 设计一个简单的 CRUD 框架,在我的 HTML 页面中,我有一个动态表单(2 个用于创建和更新文件上传的多部分,1 个不带文件上传和用于删除的多部分)。服务器端,请求调制器使用request.getParameterMap(); 检查所有参数,并从此隐藏类型输入<input type="hidden" name="returntype" value="Create"> 检查它是否是创建、更新或删除操作。基于此,它将调用必要的处理程序。
注意:我的表单 enctype 和编码设置为 multipart/form-data 注意:我的 paramMap.size() 在这里返回 0 并且 returnType 变得空,所以我得到空指针异常。
如果我根本不使用 enctype 和编码,它运行良好,但我的文件上传再次给我一个例外,即编码类型应该是 multipart/form-data。任何人都可以帮助我以一种可以创建CRUD的动态表单的方式吗?或者为什么我不能将request.getParameterMap(); 与 multipart/form-data 一起使用,谢谢 :)
下面是请求调制器的代码
public String identifyNow()throws ServletException, java.io.IOException
{
UploadXmlAgent uploadAgent;
paramMap=request.getParameterMap();
if (paramMap == null)
throw new ServletException(
"getParameterMap returned null in: " + getClass().getName());
iterator=paramMap.entrySet().iterator();
System.out.println(paramMap.size());
while(iterator.hasNext())
{
Map.Entry me=(Map.Entry)iterator.next();
if(me.getKey().equals("returntype"))
{
String[] arr=(String[])me.getValue();
returnType=arr[0];
}
}
//Identified based on returnType, instantiate appropriate Handler
if(returnType.equals("Create"))
{
uploadAgent=new UploadXmlAgent(realPath,request,paramMap);
uploadAgent.retrieveXml();
//SOME MORE OPERATIONS
return uploadAgent.uploadXml();
}
else if(returnType.equals("Update"))
{
System.out.println("Update");
uploadAgent=new UploadXmlAgent(realPath,request,paramMap);
uploadAgent.retrieveXml();
//SOME MORE OPERATIONS
return uploadAgent.uploadXml();
}
else if(returnType.equals("Delete"))
{
//SOME OPERATIONS
}
return returnType;
}
【问题讨论】:
标签: java html servlets file-upload multipartform-data