Как распорки 1.X ActionForm обрабатывают список чистых HTML-чекбоксов?
Я имею дело со старым приложением, которое использует распорки 1.2. И по какой-то причине мы используем чистую HTML-форму для представления действий Struts. Например:
для вывода содержимого testAction.do я пытаюсь представить себе.
пункт 1 пункт 2Затем я связываю bean-компонент формы TestForm с testAction.
Я не уверен, как указать свойства в форме, чтобы она принимала значение из myitem1 после того, как пользователь нажал "отправить"
Я пытался добавить getMyitem1(), setMyitem1(String[] items), getSelectedMyitem1(), setSelectedMyitem1(String[] items)
Эти set-методы вызываются только при загрузке страницы.
Я думаю, что мое понимание ActionForm в стойках 1.x должно быть неверным.
Пожалуйста, посоветуйте, спасибо.
1 ответ
Для начала давайте немного поясним, как Struts управляет отправкой форм:
- Вы отправляете некоторые значения, используя форму HTML для действия (в этом случае действие является действием Struts, обычно *.do);
- Struts получает запросы из-за ActionServlet (указан в web.xml);
- на основе информации, которую вы указали в файле struts-config.xml, выбирается определенный класс Action (тот, который соответствует вашему запросу);
- на основе идентифицированного действия получается форма действия (опять же на основе информации, которую вы указываете в struts-config.xml);
- экземпляр этой ActionForm создается или перерабатывается (в зависимости от области действия формы: запрос против сеанса);
- данные из запроса привязаны к свойствам формы;
- Ваш метод execute(...) вызывается с этим объектом формы.
Теперь привязка выполняется на основе имени; имя параметра запроса, совпадающее с именем свойства в форме. Имя параметра запроса не соответствует названию поля ввода из HTML-формы, которую вы отправили.
Например, если вы отправляете ввод с именем test
у вас должны быть следующие средства доступа в вашем классе формы действия (которые соблюдают соглашение JavaBeans для свойства с именем test
):
public void setTest(String val) { ... }
public String getTest() { ... }
Если у вас есть список значений, прикрепленных к test
Параметр (который, как я полагаю, ваш случай, так как вы упоминаете список флажков), методы доступа изменяются на тип массива:
public void setTest(String[] val) { ... }
public String[] getTest() { ... }
Но опять же имя используется для соответствия, всегда имя.
Не уверен, что вы пытаетесь сделать с пунктом 1, пунктом 2. Являются ли эти значения, представленные для вашего ввода (эквивалентно test
)?