struts 1.2でActionFormとServiceletFileUpload.parseReq...

2667 ワード

一つ質問です.back_add.jspで保存するコンテンツを「opinion」に入れ、actionで取得する場合はrequest.getParameter(「opinion」)で値を正しく取得できます
しかしpara.get(「opinion」)では値が死活して取れず、具体的なコードは以下の通りである.
Map para = new HashMap();
request.setCharacterEncoding("UTF-8");
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try 
{
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext()) 
{
FileItem item = (FileItem) itr.next();
if (item.isFormField()) 
{
para.put(item.getFieldName(), item.getString("UTF-8"));
}
else
{
if (item.getName() != null && !item.getName().equals("")) 
{
int last = item.getName().lastIndexOf("\\");
String temString = item.getName().substring(last + 1)+ "/";
String read = item.getName().substring(last + 1);
String suffix = read.substring(read.lastIndexOf("."));
String uuid = java.util.UUID.randomUUID().toString();
temString = uuid + suffix + "*"+ temString; 
enclosure = enclosure + temString; 
File tempFile = new File(item.getName());
File file = new File(servlet.getServletContext().getRealPath("/")+ "\\upload\\", uuid + suffix);
item.write(file);
}
}
}

catch (Exception e) 
{
e.printStackTrace();
}
このコードには、アップロードされた添付ファイルの処理も含まれています.ここまでpara.get("opinion")を使うとポインタ異常が報告されます.
ずっと納得していなかったし、ネットでも満足のいく解決策が見つからなかったし、使った方法を全部分解して見たし、何の不適切も見えなかったし、一言一言のテストもuploadまでは正しいようだが、itemsはどうして空いているのか......
今日やっとネットで一人の友达がアイデアに答えたのを見ました.
もとは、ActionFormとサーブレットFileUpload.parseRequest(request)は併用できませんでした!!!
ネット上の匿名の高人はこう説明しています.
  struts ActionForm              ,struts   enctype="multipart/form-data" post   ,       action     actionform,     ,       ,    action    request         request ,         request。        request,   struts-config.xml  action   actionform。 ServletFileUpload.parseRequest(request)  request      request,   actionForm request   ,    ServletFileUpload.parseRequest(request)    ,  。    ,    ActionForm ServletFileUpload.parseRequest(request)    ,           ! 
   :http://zhidao.baidu.com/question/196663366.html?fr=qrl&cid=870&index=5
 
    ,         ……         , ……