Требуется JSF = Да, не работает внутри таблицы данных? - PullRequest
0 голосов
/ 26 августа 2011

Я искал везде, но не мог найти решение этой проблемы.Я пытаюсь использовать обязательный = да, чтобы проверить, присутствует ли значение или нет.Я использую его внутри inputtext.Проблема в том, что он не работает внутри таблицы данных.Если я помещу текстовое поле вне таблицы данных, это сработает.Я использую JSF 1.7, поэтому у меня нет тега validateRequired из JSF 2.0.

Я даже использовал класс валидатора, но он все еще не работает.Кто-нибудь знает, почему обязательный = yes или validator = 'validationClass' внутри входного текста внутри таблицы данных не работает.

Я ценю помощь.

Спасибо.

1 Ответ

2 голосов
/ 26 августа 2011

Прежде всего, правильными значениями атрибута 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?

...