我想做一个多文件上传 是基于Struts的 不过出了一点问题 在此请教 如果大家有什么好的例子(多文件上传) 可以发我邮箱 [email protected]
代码如下:实体类:public class Files {
private int fileId; private String name; private String path; // 文件类型ID
private int ftid; // 档案ID
private int id; // FormFile
private FormFile file;
 
         //getter和setter方法
          ........
Form类:public class FilesForm extends ActionForm { private static final long serialVersionUID = 1L; private List<Files> myFiles; private Files files = new Files(); public FilesForm() {
myFiles = new ArrayList<Files>();
// 为了能够在页面初始显示一个file
myFiles.add(new Files());
} // 注意这个方法的定义,新建n个Files并且添加到List中 public Files getFiles(int index) {
int size = myFiles.size();
if (index > size - 1) {
for (int i = 0; i < index - size + 1; i++) {
myFiles.add(new Files());
}
}
return (Files) myFiles.get(index);
} public List getMyFiles() {
return myFiles;
} public void setMyFiles(List<Files> myFiles) {
this.myFiles = myFiles;
} public Files getFiles() {
return files;
} public void setFiles(Files files) {
this.files = files;
}
Action 不用看了 就是处理上传的 这没问题 关键是页面提交到Form的时候,如下filesUpload.jsp页面<body bgcolor="#ffffff">
<html:form method="post" action="/files.do?method=doAdd"
enctype="multipart/form-data">
<table border="1">
<TBODY>
<tr>
<td>
上传文件(
<input name="chkUploadFolder" type="checkbox"
onclick="setAddDelBtnDisplay();" />
多文件)
</td>
</tr>
<tr>
<td>
请选择文件类型:
<html:select property="files.ftid">
<html:optionsCollection name="fileTypeList" label="typeName"
value="ftid" />
</html:select>
</td>
</tr>
<tr>
<td>
<table id="tableFiles">
<nested:iterate id="files" property="myFiles" name="filesForm"
indexId="index" >
<nested:nest property="files">
<tr>
<td>
<nested:file property="file" name="files" indexed="true"
 />
</td>
</tr>
</nested:nest>
</nested:iterate>
</table>
</td>
</tr>
<TR id="RowAddDelBtn" style="display: none;">
<td align="center">
<table>
<tr>
<%--<td>
                                文件夹名:<input type="text" name="folderName" size="10"/>
                            </td>
                            --%>
<td>
<input type="button" name="btnAddFile" value="增加"
onclick="addFile()" />
</td>
<td>
<input type="button" name="btnAddFile" value="删除"
onclick="delFile()" />
</td>
</tr>
</table>
</td>
</TR>
<TR>
<td>
<input type="button" name="btnUpload" value="上传"
onclick="upload()">
</td>
</TR>
</TBODY>
</table>
</html:form>
</body>
简单来说就是 文件从页面提交到Form 但是它走的是Form里边的public Files getFiles()方法  而不是Form里边的public Files getFiles(int index)这个方法 ,报错如下:java.lang.IllegalArgumentException: Property 'files' is not indexed
at org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:429)
at org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:340)
at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:684)
at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:884)
at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493)
at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:805)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.hbzq.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:40)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)我感觉是它没走Form里边的 方getFiles(int index)这个法,没法设置断点,我的Eclipse有点问题 但运行程序可没问题我想了如果说用动态Form的话 也不行 应为Form里边有那个所有的方法 所以应该是必须走Form的 大家如果有什么好的多上传文件的例子 请发到  谢谢此贴必结 .......