Вы знакомы с методом reset () класса ActionForm?
Цель этого метода в жизни - сбросить флажки. Если у вас есть установленный флажок в вашей форме, и вы отправляете его, этот флажок будет в запросе. Если флажок снят, по запросу для него ничего не будет отправлено (отправка GET - простой способ наблюдать за этим поведением).
Когда Struts выполняет привязку запроса, он сопоставляет по имени параметры из запроса с параметрами в форме. То есть, если есть что сопоставить.
Теперь рассмотрим следующие шаги:
- У меня есть логическое поле в ActionForm;
- У меня также есть соответствующий флажок в форме;
- Я отправляю форму => Struts связывает запрос, так что теперь мое свойство истинно в ActionForm;
- Я снимаю флажок в форме и отправляю снова => по запросу для флажка ничего не отправляется => Struts нечего связывать => Ваше поле остается верным в ActionForm;
Вышеприведенное применимо для нескольких флажков, но вместо одного значения вы получаете массив.
Введите метод reset (). Это вызывается Struts перед привязкой запроса. Здесь вы можете установить значение поля в false. Если он поступит в запросе, Struts заменит его на true => OK. Если он не поступит в запрос (потому что он не проверен), значение останется ложным => OK снова.
То же самое относится и к мультибоксам. Необходимо сбросить список значений из ActionForm, уменьшив массив до нулевой длины (но не до нуля).
Если ваша ActionForm имеет область запроса, это обычно не имеет значения, потому что объект воссоздается при каждом запросе. Но для ActionForm в рамках сеанса с флажками необходимо выполнить reset ().