В мире HTML атрибут disabled
приводит к тому, что пара атрибутов name
- value
любого элемента ввода HTML (input
, select
, textarea
и button
) не отправляется на серверная сторона.
В мире JSF наличие атрибута name
используется для идентификации действия компонента, которое будет вызвано на стороне сервера. Однако на этапе применения значений запроса формы отправки JSF также проверяет, оценивает ли атрибут disabled
(и rendered
) компонента true
, прежде чем предпринимать какие-либо действия.
Здесь #{region}
представляет собой объект строки итерированной таблицы #{MyPageBackingBean.regions}
, чей геттер isMessageEmpty()
по умолчанию возвращает true
. В новом запросе формы отправить #{MyPageBackingBean.regions}
, по-видимому, пусто, что фактически делает кнопку disabled
. JSF не будет вызывать соответствующее действие.
Кстати, вам нужно убедиться, что #{MyPageBackingBean.regions}
возвращает точно такую же модель данных в последующем запросе. Самое простое решение - поместить боб MyPageBackingBean
в область действия сеанса, чтобы он не был повторно инициализирован в последующем запросе, но это также имеет больше негативных побочных эффектов. Другое исправление состоит в том, чтобы изменить загрузку модели данных так, чтобы это происходило в конструкторе компонентов. Поскольку вы уже используете Томагавк <t:dataTable>
, вам нужно установить для его атрибута preserveDataModel
значение true
. Дополнительные советы по использованию таблиц данных также могут оказаться полезными для этой статьи: Использование таблиц данных .