2011-05-31 77 views
0

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

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

任何想法?

回答

1

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

我发现我做这件事比我需要更大。有了这两个页面的帮助:

Building a controller

Index Properties

我想通了,你真正想要做的是使用一个Map来存储FormFile对象。我发现的大多数文档都依赖于模型对象,但我使用的是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})。由于文件是一个Map,因此Struts需要一个键,并使用上面的语法将它放到地图中。 Java获取地图如下:

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

这是FormFile对象的映射。尽可能甜。

我被挂了,因为我从来没有使用ArrayList/Map的东西。这很简单(因为它应该是这样的)另外,有些关于某些Struts标签的“index”参数的讨论很多,我在这里讨论了一段时间,但却无法实现,我认为这是因为DynaForm。不确定...