Прежде всего, правильными значениями атрибута required
являются логические значения true
или false
, а не строковое значение Yes
.Это атрибут, который принимает логическое выражение.
Ниже приведены правильные примеры использования:
<h:inputText required="true" />
<h:inputText required="#{bean.booleanValue}" />
<h:inputText required="#{bean.stringValue == 'Yes'}" />
Что касается проблемы, которая не работает внутри <h:dataTable>
, это может произойтикогда модель данных не сохранена должным образом (модель данных - это то, что таблица извлекает в своем атрибуте value
).Это, в свою очередь, может произойти, когда управляемый bean-компонент имеет область запроса и не подготавливает модель данных во время ее (пост) построения, что приводит к тому, что модель данных null
или пуста, пока JSF собирается собирать, преобразовывать и проверять представленные значения.
Необходимо убедиться, что модель данных точно такая же, как на этапе применения значений запроса в запросе на отправку формы, как это было на этапе ответа на запрос рендеринга первоначального запроса для отображения формы с таблицей.Простой быстрый тест - поместить компонент в область действия сеанса.Если это решит проблему, то вам определенно нужно переписать логику сохранения модели данных.Вы также можете использовать Tomahawk <t:saveState>
или <t:dataTable preserveDataModel="true">
для хранения модели данных в области просмотра (как это делает новая область просмотра JSF2).
Наконец, JSF 1.7 не существует.Возможно, вы имеете в виду JSF 1.2?