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"
на кнопку удаления (и убедитесь, что у вас нет этого атрибута на входных компонентах той же строки!).