我正在用java设计一个简单的CRUD框架,在我的HTML页面中,我有一个动态表单(2个带有用于创建和更新文件上传的多部分,1个没有文件上传和用于删除的多部分)。服务器端,请求调制器使用以下命令检查所有参数request.getParameterMap();
并检查此隐藏类型输入<input type="hidden" name="returntype" value="Create">
无论是创建、更新还是删除操作。基于此,它将调用必要的处理程序。
注意:我的表单 enctype 和编码设置为多部分/表单数据注意:我的 paramMap.size() 在这里返回 0 并且 returnType 正在获取 null,因此我收到了空指针异常。
如果我根本不使用 enctype 和编码,它运行得很好,但是我的文件上传再次给了我一个例外,编码类型应该是多部分/表单数据。任何人都可以帮助我,让我拥有一个可以创建 CRUD 的动态表单吗?或者为什么我不能使用request.getParameterMap();
with 多部分/表单数据谢谢 :)
下面给出的是请求调制器的代码
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;
}
根据另一个答案的评论:
我可以用吗request.getParameterMap();
以任何方式与多部分?
如果这是您的唯一要求,那么只需创建一个Filter
它执行解析工作并使用所有已解析的多部分项准备请求参数映射,以便您可以继续使用getParameter()
, getParameterMap()
并结合 JSP/Servlet 中的常用方式。您可以找到此类过滤器的完整示例here http://balusc.blogspot.com/2007/11/multipartfilter.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)