В JSF 2.X могу ли я визуализировать компонент только после успешной проверки?
В моем приложении у меня есть много полей, которые необходимо заполнить. Эти данные можно импортировать из веб-сервиса с помощью ключа поиска.
Когда пользователь вводит действительный ключ поиска, система выполняет поиск в других полях и отображает их с новыми значениями. Но когда пользователь вводит несуществующий ключ (или любую другую ошибку проверки), сервер генерирует ошибку проверки, но все же отображает поля, теряя при этом все данные, которые там были заполнены.
Что мне нужно, так это то, что пользователь может выполнить запрос и что, если запрос не возвращает результатов, это не влияет на данные, которые он уже ввел.
Ниже приведен пример кода. Таким образом, если пользователь заполнил поля внутри updateThisOnSuccess и сразу после неудачной попытки запроса, заполненное значение не теряется.
<h:inputText value="#{controller.searchWebService}" >
<f:ajax execute="@this" render="updateThisOnSuccess messages" />
</h:inputText>
<h:panelGroup id="updateThisOnSuccess">
<h:inputText value="#{controller.field}" />
<!-- other fields -->
</h:panelGroup>
Отправка значений полей для запуска поиска также не представляется возможным, так как это вызовет необходимость проверки полей внутри updateThisOnSuccess.
Примечание. Я видел ответ, данный @BalusC на аналогичный вопрос, но это отличается от того, что мне интересно, почему , в этом случае foo-holder всегда отображается, а foo является обусловливающим. Это не мой случай, так как при таком подходе элементы управления не будут отображаться при сбое проверки.
rendered="#{not empty controller.searchWebService}"
? В конце концов, это всего лишь вопрос точного указания желаемого условия в атрибутеrendered
. - person BalusC   schedule 08.09.2015<f:ajax execute="@this" render="updateThisOnSuccess messages" />
Проверка не удалась<f:ajax execute="@this" render="messages" />
- person Marcelo Barros   schedule 08.09.2015