2011-05-31 54 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。不確定...