Проблемы с очисткой InputText в JSF Datatable - PullRequest
4 голосов
/ 23 февраля 2010

Я пытаюсь сбросить некоторые входные текстовые поля внутри таблицы данных, используя кнопку отмены. Проблема, с которой я столкнулся, заключается в том, что, если я пытаюсь отменить его, но есть ошибки проверки, это не позволяет мне сделать это, потому что сначала выполняется проверка, находит и выдает ошибку, и выводит ошибку до того, как она сможет воспроизвести себя.

Очевидное решение состоит в том, чтобы установить «немедленное = истинное» на кнопку. Это избавляет от проблемы и позволяет мне отменить без проверки, НО сами поля не установлены в свои первоначальные значения. Это связано с тем, что сами компоненты никогда не получают данные из базовых компонентов, ПОТОМУ ЧТО НЕМЕДЛЕННО установлено на true.

Это очень хорошо объяснено в этой статье: http://wiki.apache.org/myfaces/ClearInputComponents

В статье представлено много решений, но ни одно из них не работает для меня.

  • Мне нужно остаться на той же странице, поэтому изменение представлений не вариант.
  • Я не могу сбросить значения ВСЕХ полей ввода на странице, потому что я хочу, чтобы только «строка», которую я отменяю, была сброшена
  • Я не могу связать компоненты ни с одним из полей ввода, потому что, поскольку они находятся в базе данных, атрибут «binding» самого поля ввода не может ссылаться на переменную 'var'. Например, следующий атрибут «binding» недопустим и выдает ошибку:

Это может быть связано с тем, что 'var' является только областью запроса.

В любом случае, у кого-нибудь есть идеи, как заставить это работать?

Ответы [ 2 ]

4 голосов
/ 23 февраля 2010

С JSF это тяжело. У вас очень мало контроля над проверкой. Лучше всего использовать JavaScript для сброса значений. Это делается всего за несколько строк (или с помощью jQuery ) вместо десятков до сотен, что вы могли бы сделать, чтобы обойти этот способ jsfish.

0 голосов
/ 25 февраля 2010

В любом случае я в конечном итоге использовал обходной путь, который требовал всего около 50 строк кода, более или менее, чтобы вручную выполнить проверку и преобразовать значения входного текста (которые по умолчанию являются строками) в целые числа. У меня были неудачные опыты по смешиванию javascript с JSF (библиотека Вудстока), поэтому я боюсь снова вводить его в среду;)

...