Struts使用Dyna Action Forms(Struts 1)上传多个文件

时间:2011-05-31 17:15:58

标签: file-upload struts struts-1

我需要在一个页面上传多个文件。使用DynaAction表单时,您必须指定每个表单的“名称”。我需要这是动态的。我相信我可以使用数组/列表来获取一堆文件,但我无法将文件与任何特定文件匹配。

地图很完美,但我恐怕无法弄清楚地图的“关键”部分。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

所以我研究并花了3个小时尝试不同的东西。关于此,网上缺乏信息。很多未解答的问题。现在Struts 1已经落日了,可能没有更多的信息,所以我想我会在棺材上添加钉子......

我发现我做的比我需要的更大。在这两页的帮助下:

Building a controller

Index Properties

我发现你真正想做的是使用Map来存储FormFile对象。我发现的大多数文档都依赖于Model Objects,但我使用的是DynaForms。所以Struts-config.xml看起来像这样:

<form-property name="theFiles" type="java.util.HashMap"/>

JSP看起来像这样:

 <c:forEach items="${userForm.map.roleChanges}" var="changeMap" varStatus="status"> 
...
    <html:file property="theFile(${changeMap.key.roleName})"  styleId="theFile" />
...     
</c:forEach>

秘诀就是财产:theFiles($ {changeMap.key.roleName})。由于theFiles是一个Map,Struts需要一个键,你可以使用上面的语法在地图中获取它。获取地图的Java如下:

Map fileMap =  (Map)userForm.get("theFile");

这是FormFile对象的Map。很可爱。

我被挂了,因为我之前从未使用过ArrayList / Map。它非常简单(应该是这样。另外,在一些Struts标签上有很多关于“index”参数的讨论。我摆弄了一段时间,但是无法让它工作。我认为这是因为DynaForm。不确定......