HTML поля формы как элементы массива в форме распорок - PullRequest
4 голосов
/ 16 декабря 2008

То, что я хотел бы сделать, это динамически добавлять поля ввода HTML на одной странице, и каждое из них соответствует элементу свойства массива struts. Допустим, у меня есть несколько одинаковых полей на странице HTML:

и когда форма отправляется, я хочу, чтобы каждое поле соответствовало элементу в массиве FormFile в компоненте формы Struts:

FormFile [] myfile;

Очевидно, что вышеприведенное не работает, но я ищу, как сделать что-то эквивалентное.

РЕДАКТИРОВАТЬ: Выше не работает для загрузки файлов и только тип FormFile.

В противном случае элемент массива отображается на элемент ввода или на экземпляр элемента html: text, интуитивно. Итак, чтобы сделать мой вопрос более конкретным, почему я не могу загрузить с помощью Struts массив файлов?

Ответы [ 2 ]

2 голосов
/ 16 июня 2009

ОК, вот решение "будет работать для меня":

Прежде всего, в вашем html / jsp файле должен быть проиндексирован атрибут name:

Файл 1:

Файл 2:

Файл 3:

"Уловка" в вашей структуре Struts заключается в инициализации массива FormFile. Выполнение этих двух вещей сделает работу. Просто будьте внимательны, чтобы проверить длину массива по отношению к количеству фактически представленных элементов, то есть проверить наличие пустых элементов массива. Я думаю, что это обеспечивает хорошую основу для адаптации к вашим потребностям. Как я уже сказал в заключительном редактировании моего вопроса, для элемента или вам не понадобится ни индексированное свойство, ни инициализация массива в компоненте формы. Я действительно не знаю, почему это так, я немного посмотрел в классе org.apache.commons.beanutils.PropertyUtilsBean в проекте apache commons: любой желающий может взглянуть на методы set * Property этого класса. *

1 голос
/ 04 января 2009

то, что вы ищете, называется «индексированные свойства». Поскольку есть лучшие «как», чем я могу описать это, посмотрите здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...