Итак, я исследовал и потратил 3 часа, пробуя разные вещи. По этому поводу в Интернете не хватает информации. Множество неотвеченных вопросов. Теперь, когда Struts 1 - закат, вероятно, больше не будет информации, поэтому я решил добавить гроб в гроб ...
Я обнаружил, что делаю это больше, чем нужно. С помощью этих двух страниц:
Построение контроллера
Свойства индекса
Я понял, что вы действительно хотите использовать карту для хранения объектов 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}). Поскольку theFiles - это карта, Struts нужен ключ, и вы используете приведенный выше синтаксис, чтобы получить его на карте. Java для получения карты выглядит следующим образом:
Map fileMap = (Map)userForm.get("theFile");
Это карта объектов FormFile. Сладко, как может быть.
Я повесил трубку, потому что никогда раньше не использовал ArrayList / Map. Это довольно просто (как и должно быть. Кроме того, много говорят о параметре «index» в некоторых тегах Struts. Я некоторое время возился с ним, но не мог заставить его работать. Я думаю, потому что DynaForm. Не уверен ...