Во-первых, давайте немного поясним, как Struts управляет отправкой формы:
- вы отправляете некоторые значения, используя форму HTML, для действия (в данном случае это действие Struts, обычно * .do);
- Struts получает запросы из-за ActionServlet (указан в web.xml);
- на основе информации, которую вы указали в файле struts-config.xml, выбран определенный класс действий (тот, который соответствует вашему запросу);
- на основе идентифицированного действия получается форма действия (опять же на основе информации, которую вы указываете в 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
)?