Я пытаюсь сбросить некоторые текстовые поля ввода внутри таблицы данных с помощью кнопки отмены. Проблема, с которой я сталкиваюсь, заключается в том, что если я попытаюсь отменить ее, но есть ошибки проверки, она не позволит мне сделать это, потому что сначала выполняет проверку, находит и выводит ошибку и выводит ошибку, прежде чем он сможет повторно отобразить себя.
Очевидное решение — установить для кнопки «immediate=true». Это избавляет от проблемы и позволяет мне отменить без проверки, НО сами поля не устанавливаются в исходные значения. Это связано с тем, что сами компоненты никогда не получают данные из резервных компонентов, ПОТОМУ ЧТО для параметра немедленно установлено значение true.
Это очень хорошо объясняется в этой статье: http://wiki.apache.org/myfaces/ClearInputComponents а>
В статье представлено множество решений, но ни одно из них мне не подходит.
- Я должен оставаться на той же странице, поэтому смена взглядов невозможна.
- Я не могу сбросить значения ВСЕХ полей ввода на странице, потому что я хочу сбросить только «строку», которую я отменяю.
Кажется, я не могу привязать компоненты ни к одному из полей ввода, потому что, поскольку они находятся в данных, атрибут «binding» самого поля ввода не может ссылаться на переменную «var». Например, следующий атрибут «binding» является недопустимым и выдает ошибку:
‹ice:dataTable id="poolSharesTbl" var="node" value="#{poolSharesManager.nodeModel}" ... ‹ice:column› ‹ice:inputText binding="#{node.inputTextBinding}" ...
Это может быть связано с тем, что 'var' является только областью запроса.
В любом случае, есть ли у кого-нибудь идеи о том, как заставить это работать?