h:inputText, h:selectOneMenu показывает старые значения после повторного рендеринга

У меня есть h:inputText, h:selectOneMenu в каждой строке таблицы. У меня также есть кнопка удаления в конце каждой строки. При нажатии кнопки удаления соответствующая строка удаляется. Когда я удаляю строку, количество строк, отображаемых в таблице, уменьшается на единицу, но данные по-прежнему отображаются из старой строки. Придумайте следующий пример:

Считайте, что у меня есть три ряда:

Text1 comboxBox1 delete1
Text2 comboxBox2 delete2
Text3 comboxBox3 delete3

по нажатию delete1:

Текущее поведение
Text1 comboxBox1 delete2
Text3 comboxBox3 delete3

Ожидаемое поведение
Text2 comboxBox2 delete2
Text3 comboxBox3 delete3

Одна странная вещь, которую я заметил, заключается в том, что когда я изменил inputText на outputText, данные обновляются. Я сталкиваюсь с этой проблемой только с компонентами ввода (textArea, testBox, combo-box и check-box).

Я использую JSF1.2, веб-поток Spring в среде портала.

1 ответ

Решение

Таким образом, вместо значения модели отображается только представленное значение входного компонента. Это говорит о том, что проверка не прошла на конкретном компоненте. Как именно вы вызываете кнопку удаления? У меня сложилось впечатление, что вы подавляете ошибки валидации и удаляете строку внутри неактивного метода.

Это неправильный способ удаления строки таблицы данных. Все, что вам нужно, это immediate="true" на кнопку удаления (и убедитесь, что у вас нет этого атрибута на входных компонентах той же строки!).

Другие вопросы по тегам