Не может снять флажок со всеми в Мультиполе Struts

У меня есть j2ee приложение, работающее weblogic. Я был перепутан со своим мультиполем.

То, что я знаю мультиполя, - то, что проверенные объекты будут переданы как массив строк на, отправляют.

Я не знаю, почему в моем приложении это хорошо работает, когда я снял флажок с флажком или больше, пока единственное поле остается проверенным, но когда я снял флажок со всем, отправленный массив является массивом of the ранее проверенные мультиполя, когда это, как предполагалось, было пусто.

Можно ли помочь мне?

7
задан Alban Becquet 31 May 2016 в 15:45
поделиться

1 ответ

Вы знакомы с методом reset () класса ActionForm?

Назначение этого метода - сбросить флажки. Если в вашей форме установлен флажок, и вы отправляете его, этот флажок будет отображаться в запросе. Если флажок снят, при запросе на него ничего не будет отправлено (отправка GET - простой способ наблюдать за этим поведением).

Когда Struts выполняет привязку запроса, он сопоставляет по имени параметры из запроса с параметрами в форме. То есть, если есть что сопоставить.

Теперь рассмотрим следующие шаги:

  • У меня есть логическое поле в ActionForm;
  • У меня также есть соответствующий флажок в форме;
  • Я отправляю форму => Struts связывает запрос, так что теперь мой свойство истинно в ActionForm;
  • Я снимаю флажок в форме и отправляю снова => по запросу для флажка ничего не отправляется => Struts не к чему привязывать => ваше поле остается истинным в ActionForm;

Вышесказанное применимо для нескольких флажков, но вы получаете массив вместо одного значения.

Введите метод сброса ().Это вызывается Struts перед привязкой запроса. Здесь вы можете установить значение поля false. Если он поступит в запросе, Struts заменит его на true => OK. Если он не поступит по запросу (потому что он не отмечен), значение останется false => OK снова.

То же самое и с мультибоксами. Вы должны сбросить список значений из ActionForm, уменьшив массив до нулевой длины (но не до нуля).

Если ваша ActionForm имеет область запроса, это обычно не имеет значения, потому что объект воссоздается при каждом запросе. Но для ActionForm с ограниченным сеансом и флажками функция reset () является обязательной.

14
ответ дан 6 December 2019 в 15:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: